教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go 继承,结构体实现继承

Go 继承,结构体实现继承

发布时间:2022-01-15   编辑:jiaochengji.com
教程集为您提供Go 继承,结构体实现继承等资源,欢迎您收藏本站,我们将为您提供最新的Go 继承,结构体实现继承资源

 

demo.go(结构体的匿名字段实现继承):

<pre class="has"><code class="language-Go">package main import "fmt" // 定义结构体类型 (父类) type Person struct { id int name string age int } // 定义结构体类型 (子类) type Student struct { Person // 匿名字段实现继承 (结构体嵌套结构体) //p Person // 也可以为结构体Person起别名 score int } func main() { // 对象 var stu Student //stu.Person.name = "张三" // 可以通过Person.的方式获取/修改父类的属性 stu.name = "张三" // 也可以直接通过.的方式获取/修改父类的属性 //stu.p.name = "张三" // 如果不是通过匿名字段实现的继承而是别名,那么必须通过别名p.的方式获取父类属性 stu.age = 20 // 继承于父类的属性 stu.score = 90 // 子类本身的属性 fmt.Println(stu) // {{0 张三 20} 90} // 对象 var stu2 Student = Student{Person{2, "李四", 22}, 95} fmt.Println(stu2) // {{2 李四 22} 95} } </code></pre>

demo.go(子类结构体中存在和父类相同的成员):

<pre class="has"><code class="language-Go">package main import "fmt" // 定义结构体类型 (父类) type Person struct { id int name string age int } // 定义结构体类型 (子类) type Student struct { Person // 匿名字段实现继承 (结构体嵌套结构体) name string // 和父类Person中重复的成员。 score int } func main() { // 对象 var stu Student stu.name = "张三" // 默认赋值给子类的name成员,父类的name成员默认是空串。 stu.Person.name = "小张" // 赋值给父类的name成员 stu.age = 20 stu.score = 90 fmt.Println(stu) // {{0 小张 20} 张三 90} } </code></pre>

demo.go(结构体的匿名字段是指针,实现继承):

<pre class="has"><code class="language-Go">package main import "fmt" // 定义结构体类型 (父类) type Person struct { id int name string age int } // 定义结构体类型 (子类) type Student struct { *Person // 指针实现继承 (结构体指针) score int } func main() { // 对象 var stu Student // stu.name = "张三" // 会报错。 通过指针实现继承,不能为父类成员直接赋值,需要先new()开辟空间 stu.Person = new(Person) // stu.Person是指针类型,默认是空指针nil。 需要先new()开辟空间。 stu.name = "张三" // new()开辟空间之后,才可以为父类的成员赋值。 (*stu.Person).父类成员 可以简写成 stu.父类成员 // stu.Person = &Person{2, "张三", 20} // 也可以通过该方式直接为父类成员赋值。 stu.age = 20 stu.score = 90 fmt.Println(stu) // {0xc000004460 90} } </code></pre>

 

 

到此这篇关于“Go 继承,结构体实现继承”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go结构体继承指针和非指针区别(转换接口)
Go 继承,结构体实现继承
Go 继承,多继承
Javascript 设计模式读书笔记(三)——继承
Go核心编程-面向对象 [OOP]
golang 面试题(四)go的组合继承
【Go语言入门系列】(八)Go语言是不是面向对象语言?
PHP面向对象编程之继承的简单实例
JavaScript继承方式详解
go语言使用之接口与继承的区别

[关闭]
~ ~