title: Scheduled polling task in Go
body: <p>I have written some code that will concurrently poll URLs every 30 minutes:</p>
  
  <pre><code>func (obj * MyObj) Poll() {
      for ;; {
          for _, url := range obj.UrlList {
              //Download the current contents of the URL and do something with it
          }
          time.Sleep(30 * time.Minute)
  }
  
  //Start the routine in another function
  go obj.Poll()
  </code></pre>
  
  <p>How would I then add to obj.UrlList elsewhere in the code and ensure that the next time the URLs are polled that the UrlList in the Poll goroutine as also been updated and as such will also poll the new URL?</p>
  
  <p>I understand that memory is shared through communicating rather than vice versa in Go and I've investigated channels however I'm not sure how to implement them in this example.</p>