type Foo interface {
FooMethod()
}
type BarFoo struct {
}
func (f *BarFoo) FooMethod() {
}
func NewBarFoo() *Foo {
return &BarFoo{}
}
Run Code Online (Sandbox Code Playgroud)
错误:无法使用“&BarFoo{}”(类型 *BarFoo)作为类型 *Foo
为什么我会收到此类代码的编译错误?多态性对指针有用吗?
顺便说一句,这段代码很好
func NewBarFoo() Foo {
return &BarFoo{}
}
Run Code Online (Sandbox Code Playgroud)
您只需将函数签名更改为
func NewBarFoo() Foo {
return &BarFoo{}
}
Run Code Online (Sandbox Code Playgroud)
你仍然返回一个指针,恰好该指针实现了接口