title: Interfaces and pointer receivers
body: <p>I am newbie gopher and trying to get my head around the pointer receivers and interfaces. </p>
  
  <pre><code>type Foo interface {
      foo()
  }
  type Bar struct {}
  func (b *Bar) foo() {}
  </code></pre>
  
  <p>based on the above definitions..</p>
  
  <pre><code>--- Allowed ---------
  b := Bar{}
  b.foo()
  
  --- Not allowed ----- 
  
  var foo Foo = Bar{}
  </code></pre>
  
  <p>Get compiler error:
  cannot use Bar literal (type Bar) as type Foo in assignment:
      Bar does not implement Foo (foo method has pointer receiver)</p>
  
  <p>I understand that compiler is doing some pointer conversion and de-referencing on our behalf in the first scenario. Why doesn't it do the same thing in the second scenario ?</p>