demo.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}
}
demo.go(子类结构体中存在和父类相同的成员):
package main
import "fmt"
// 定义结构体类型