首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go embedding:方法未继承

Go embedding:方法未继承
EN

Stack Overflow用户
提问于 2018-12-16 04:01:21
回答 2查看 50关注 0票数 0

我尝试了一下golang嵌入,但以下代码不能编译:

代码语言:javascript
复制
type Parent struct {}

func (p *Parent) Foo() {
}

type Child struct {
    p *Parent
}

func main() {
    var c Child
    c.Foo()
}

使用

代码语言:javascript
复制
./tmp2.go:18:3: c.Foo undefined (type Child has no field or method Foo)

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-16 04:25:06

当你在写的时候:

代码语言:javascript
复制
type Child struct {
    p *Parent
}

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

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

代码语言:javascript
复制
func (c *Child) Foo() {
    c.p.Foo()
}

通过嵌入,您可以避免这种记账,并且语法将是

代码语言:javascript
复制
type Child struct {
    *Parent
}
票数 4
EN

Stack Overflow用户

发布于 2018-12-16 04:08:41

你要么得打电话给

代码语言:javascript
复制
c.p.Foo()

或者将Child struct更改为:

代码语言:javascript
复制
type Child struct {
    *Parent
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53796786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档