为了账号安全,请及时绑定邮箱和手机立即绑定

Go 嵌入:方法未继承

Go 嵌入:方法未继承

Go
眼眸繁星 2023-05-15 15:40:19
我正在尝试 golang 嵌入,但以下代码无法编译:type Parent struct {}func (p *Parent) Foo() {}type Child struct {    p *Parent}func main() {    var c Child    c.Foo()}和./tmp2.go:18:3: c.Foo undefined (type Child has no field or method Foo)我做错了什么?
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

当你写作时:


type Child struct {

    p *Parent

}

你没有嵌入Parent,你只是声明了一些类型p的实例变量*Parent。


要调用p方法,您必须将调用转发到p


func (c *Child) Foo() {

    c.p.Foo()

}

通过嵌入你可以避免这种簿记,语法将是


type Child struct {

    *Parent

}


查看完整回答
反对 回复 2023-05-15
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

你要么必须打电话

c.p.Foo()

或将 Child 结构更改为此:

type Child struct {
    *Parent
}


查看完整回答
反对 回复 2023-05-15
  • 2 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信