Go基础_1_41 结构体匿名字段
package main
import "fmt"
// 1.定义父类
type Person struct {
name string
age int
}
// 2.定义子类
type Student struct {
Person // 模拟继承结构
school string // 子类的新增属性
}
func main() {
/*
面向对象:OOP
Go语言的结构体嵌套:
1.模拟继承性:is - a
type A struct{
field
}
type B struct{
A //匿名字段
}
2.模拟聚合关系:has - a
type C struct{
field
}
type D struct{
c C //聚合关系
}
*/
// 1.创建父类的对象
p1 := Person{name: "张三", age: 30}
fmt.Println(p1)
fmt.Println(p1.name, p1.age)
// 2.创建子类的对象
s1 := Student{Person{"李四", 17}, "千锋教育"}
fmt.Println(s1) // {{李四 17} 千锋教育}
s2 := Student{Person: Person{name: "rose", age: 19}, school: "北京大学"}
fmt.Println(s2) // {{rose 19} 北京大学}
var s3 Student
s3.Person.name = "王五"
s3.Person.age = 19
s3.school = "清华大学"
fmt.Println(s3) // {{王五 19} 清华大学}
s3.name = "Ruby" // 可以简写
s3.age = 16 //
fmt.Println(s3) // {{Ruby 16} 清华大学}
}