golang 继承问题

package main

import "fmt"

type People struct{}

func (p *People) ShowA() {
    fmt.Println("showA")
    p.ShowB()
}
func (p *People) ShowB() {
    fmt.Println("showB")
}

type Teacher struct {
    People
}

func (t *Teacher) ShowB() {
    fmt.Println("teacher showB")
}

func main() {
    t := Teacher{}
    t.ShowA()
}

如上代码,为什么输出的是:
showA
showB

而不是:
showA
teacher showB

阅读 2.9k
2 个回答

因为Golang中没有继承的概念,这里实际上只是结构体类型的嵌入,被嵌入的类型是无法直接访问嵌入者的成员或者是方法的。

你的 showA里面调用的是 p.showB。而p是*People类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题