使用指针进行工厂方法多态

时间:2019-02-12 19:00:24

标签: go polymorphism

type Foo interface {
    FooMethod()
}
type BarFoo struct {
}
func (f *BarFoo) FooMethod() {
}
func NewBarFoo() *Foo {
    return &BarFoo{}
}

错误: 不能将'&BarFoo {}'(* BarFoo类型)用作* Foo

类型

为什么我会收到此类代码的编译错误?多态性对指针有效吗?

顺便说一句,此代码很好

func NewBarFoo() Foo {
    return &BarFoo{}
}

1 个答案:

答案 0 :(得分:3)

您只需要将功能签名更改为

func NewBarFoo() Foo {
    return &BarFoo{}
}

您仍在返回一个指针,恰好该指针实现了接口