H5W3
当前位置:H5W3 > 问答 > 正文

golang方法继承与接收者的问题?

代码如下

type Person struct {
name string
}
type Student struct {
Person
name string
}
func (p Person) Name() {
fmt.Println(p.name)
}
func main() {
var student = Student{Person{"human"}, "aaron"}
student.Name()
}

如上,此时打印出来的name值是human,那么怎样才能再Name方法中能获取到Student的name,就是说想在Name方法中获取到Student的对象。这只能使用方法重写吗?

回答

只能重写,Person在里面,没法或外层被组合对象的信息。

只能Student获取Person的信息。

 fmt.Println(p.Person.name) 

我理解的你说的可能有两种意思:

  1. 继承和重写:如果要有继承概念,那person应该是父类吧,首先的实现父类person的Name。

然后子类student如果想继承,那Student不重写Name方法就好。重写了Name方法,那肯定是执行子类student的Name方法。就读不到human了。

  1. 你就想在当前代码下获取到父类的属性,那就直接把student的Name方法中输出p.Person.name就读到了human

本文地址:H5W3 » golang方法继承与接收者的问题?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址