Я смущен, почему это невозможно скомпилировать с помощью:
невозможное утверждение типа: Faz не реализует Foo (метод Bar имеет приемник указателей)
Если я сделаю приемник для Faz.Bar значением Faz, а не указателем Faz, тогда он компилируется отлично, но я думал, что всегда лучше иметь приемники указателей, чтобы значения не копировались вокруг?
package main
import (
"log"
)
func main() {
foo := New().(Faz)
log.Println(foo)
}
type Foo interface {
Bar() string
}
func New() Foo {
return &Faz{}
}
type Faz struct {
}
func (f *Faz) Bar() string {
return `Bar`
}