type Foo interface {
FooMethod()
}
type BarFoo struct {
}
func (f *BarFoo) FooMethod() {
}
func NewBarFoo() *Foo {
return &BarFoo{}
}
错误:
不能将'&BarFoo {}'(* BarFoo类型)用作* Foo类型
为什么我会收到此类代码的编译错误?多态性对指针有效吗?
顺便说一句,这个代码很好
func NewBarFoo() Foo {
return &BarFoo{}
}
最佳答案
您只需要将功能签名更改为
func NewBarFoo() Foo {
return &BarFoo{}
}
您仍在返回一个指针,恰好该指针实现了接口
关于go - 使用指针进行工厂方法多态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54656970/