登录
首页 >  Golang >  Go教程

Go 结构体嵌入模拟继承时,接收者方法如何访问派生结构体属性?

时间:2024-12-02 21:27:49 371浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《Go 结构体嵌入模拟继承时,接收者方法如何访问派生结构体属性?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

Go 结构体嵌入模拟继承时,接收者方法如何访问派生结构体属性?

go方法与接收者中的继承问题

当使用结构体嵌入模拟继承时,接收者方法中无法获取派生结构体对象的属性。

考虑以下代码:

type person struct {
    name string
}

type student struct {
    person
    name string
}

func (p person) name() {
    fmt.println(p.name)
}

func main() {
    student := student{person{"human"}, "aaron"}
    student.name()
}

输出 "human",而不是 "aaron"。原因在于接收者 person 传递给 name() 方法,因此 name() 方法只能访问 person 的属性。

解决方法是重写 name() 方法:

func (s Student) Name() {
    fmt.Println(s.name)
}

这将使用 student 接收者调用 name() 方法,允许访问 student 的属性。

需要注意的是,go 并未采用传统的继承概念,而是通过组合来模拟继承。因此,go 中没有构造函数或继承关键字,而是使用了嵌入和方法重写。

理论要掌握,实操不能落!以上关于《Go 结构体嵌入模拟继承时,接收者方法如何访问派生结构体属性?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>