title: Create an interface that is a slice of another interface
body: <p>I'd like to do something like the following:</p>
  
  <pre><code>type Model interface {
      EntityType() string
      GetKey() *datastore.Key
      SetKey(*datastore.Key) error
      PreSave(context.Context) error
      PostSave(context.Context) error
      PostLoad(context.Context) error
  }
  
  type Models []Model interface {
      Prepare(int) ([]Model, error)
  }
  </code></pre>
  
  <p>So that the struct <code>Models</code> is also an interface and would get implemented by a slice of the structs that implement <code>Model</code>. Something like the following:</p>
  
  <pre><code>type Foo struct {
      key   *datastore.Key `datastore:"_"`
      // ... other things here
  }
  
  // assume all Model interface funcs are here and valid
  
  type Foos []Foo
  
  func (f *Foos) Prepare (num int) ([]Model, error) {
      // do the preparations for Foo slice
  }
  </code></pre>
  
  <p>Obviously, the code above throws errors and isn't possible. But is there some code that would produce basically the same functionality? Without using <code>reflect</code> or anything costly like that?</p>