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/

10-10 14:32