我对此为何无法编译感到困惑:
如果我将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`
}
最佳答案
因为它是*Faz
而不是Faz
。
func main() {
foo := New().(*Faz)
log.Println(foo)
}