title: Why can't the interface be implemented with pointer receivers
body: <p>I'm confused as to why this fails to compile with:</p>
  
  <blockquote>
    <blockquote>
      <p>impossible type assertion:
           Faz does not implement Foo (Bar method has pointer receiver)</p>
    </blockquote>
  </blockquote>
  
  <p>if I make the receiver for Faz.Bar a Faz value rather than a Faz pointer then it compiles fine, but I thought it was always better to have pointer receivers so values aren't being copied around?</p>
  
  <pre><code>package main
  
  import (
      "log"
  )
  
  func main() {
      foo := New().(Faz)
      log.Println(foo)
  }
  
  type Foo interface {
      Bar() string
  }
  
  func New() Foo {
      return &amp;Faz{}
  }
  
  type Faz struct {
  }
  
  func (f *Faz) Bar() string {
      return `Bar`
  }
  </code></pre>