猿问

在golang的继承方法中使对象可访问

我正在尝试在 golang 中实现继承。下面是例子:


type A struct {

  Number int

}


type B struct{

  A

  name String

}


func (a A) GetNumber() {

    // Here I want to use instance of B

    fmt.Println(a) // but this is giving me instance of A

}

如果 A 被 B 继承,是否可以在 A 的函数中获取 B 的实例?


哆啦的时光机
浏览 115回答 1
1回答

杨__羊羊

首先,您的代码中存在错误。直到您没有创建另一个类型,因为String您必须将其更正为string.然后在 Go 中,您可以使用复合结构,这意味着您可以直接访问包含在另一个结构中的结构字段,就像您已经做过的那样。这意味着您可以在声明了结构字段的方法接收器上调用方法。为了更正您的示例,如果我正确理解您的问题:package mainimport (    "fmt")type A struct {    Number int}type B struct{    A    name string}func main() {    b := &B{A{1}, "George"}    b.GetValues()}func (b B) GetValues() {        fmt.Println(b.Number)    fmt.Println(b.name)}在下面的示例中,因为struct A包含在struct Bthis 中意味着您可以调用struct A在 GetValues 方法中声明的结构字段。这是因为struct B继承了struct A字段。https://play.golang.org/p/B-XJc6jddE
随时随地看视频慕课网APP

相关分类

Go
我要回答