code: func (c *Controller) Run(stopChan <-chan struct{}) {
  	ticker := time.NewTicker(c.Interval)
  	defer ticker.Stop()
  	for {
  		err := c.RunOnce()
  		if err != nil {
  			log.Error(err)
  		}
  		select {
  		case <-ticker.C:
  		case <-stopChan:
  			log.Info("Terminating main controller loop")
  			return
  		}
  	}
  }
docs: // Run runs RunOnce in a loop with a delay until stopChan receives a value.