登录
首页 >  Golang >  Go问答

Go 工厂方法中的指针多态特性

来源:stackoverflow

时间:2024-03-18 16:54:31 274浏览 收藏

在 Go 中使用工厂方法时,指针的多态特性可以让你返回一个实现了特定接口的结构体指针。然而,如果你直接返回结构体指针,可能会遇到编译错误。要解决这个问题,只需将函数签名更改为返回接口类型,这样就可以返回实现了该接口的任何结构体指针。通过这种方式,你可以利用多态性来创建具有不同行为的结构体,同时仍然符合同一接口。

问题内容

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 工厂方法中的指针多态特性》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>