猿问

Go 嵌入:方法未继承

我正在尝试 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)

我做错了什么?


眼眸繁星
浏览 96回答 2
2回答

不负相思意

当你写作时:type Child struct {    p *Parent}你没有嵌入Parent,你只是声明了一些类型p的实例变量*Parent。要调用p方法,您必须将调用转发到pfunc (c *Child) Foo() {    c.p.Foo()}通过嵌入你可以避免这种簿记,语法将是type Child struct {    *Parent}

繁星淼淼

你要么必须打电话c.p.Foo()或将 Child 结构更改为此:type Child struct {     *Parent }
随时随地看视频慕课网APP

相关分类

Go
我要回答