title: Why can't I pass a `func() []int` as `func() []interface{}` in go?
body: <p>I have the following definition:</p>
  
  <pre><code>func (c *Collector) RegisterSource(f func() []interface{}) {
      c.source = f
  }
  </code></pre>
  
  <p>I attempt to call it as follows but get an error:</p>
  
  <pre><code>func source() []int {
      return []int{ 0, 1, 2, 3, 4 }
  }
  ...
  c.RegisterSource(source)
  </code></pre>
  
  <p>This is met with:</p>
  
  <pre><code>cannot use source (type func() []int) as type func() []interface {} in argument to c.RegisterSource
  </code></pre>