title: Check if struct implements a given interface
body: <p>I need to walk through all the field of a struct type and check if they implements a given interface.</p>
  
  <pre><code>type Model interface {...}
  
  func HasModels(m Model) {
      s := reflect.ValueOf(m).Elem()
      t := s.Type()
      modelType := reflect.TypeOf((*Model)(nil)).Elem()
  
      for i := 0; i &lt; s.NumField(); i++ {
          f := t.Field(i)
          fmt.Printf("%d: %s %s -&gt; %s\n", i, f.Name, f.Type, f.Type.Implements(modelType)) 
      }       
  }
  </code></pre>
  
  <p>Then, if a call HasModels with a struct like so :</p>
  
  <pre><code>type Company struct {...}
  
  type User struct {
      ...
      Company Company
  }
  
  HasModels(&amp;User{})
  </code></pre>
  
  <p>With Company and User both implementing Model; I get f.Type.Implements(ModelType) returning false for the Company field of the User struct.</p>
  
  <p>This is unexpected, so, what Am I doing wrong here ?</p>