I am newbie gopher and trying to get my head around the pointer receivers and interfaces.
type Foo interface {
foo()
}
type Bar struct {}
func (b *Bar) foo() {}
based on the above definitions..
--- Allowed ---------
b := Bar{}
b.foo()
--- Not allowed -----
var foo Foo = Bar{}
Get compiler error: cannot use Bar literal (type Bar) as type Foo in assignment: Bar does not implement Foo (foo method has pointer receiver)
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 ?