1 package main
2
3 import "fmt"
4
5 // 1.定义父类
6 type Person struct {
7 name string
8 age int
9 }
10
11 // 2.定义子类
12 type Student struct {
13 Person // 模拟继承结构
14 school string // 子类的新增属性
15 }
16
17 func main() {
18 /*
19 面向对象:OOP
20
21 Go语言的结构体嵌套:
22 1.模拟继承性:is - a
23 type A struct{
24 field
25 }
26 type B struct{
27 A //匿名字段
28 }
29
30 2.模拟聚合关系:has - a
31 type C struct{
32 field
33 }
34 type D struct{
35 c C //聚合关系
36 }
37 */
38
39 // 1.创建父类的对象
40 p1 := Person{name: "张三", age: 30}
41 fmt.Println(p1)
42 fmt.Println(p1.name, p1.age)
43
44 // 2.创建子类的对象
45 s1 := Student{Person{"李四", 17}, "千锋教育"}
46 fmt.Println(s1) // {{李四 17} 千锋教育}
47
48 s2 := Student{Person: Person{name: "rose", age: 19}, school: "北京大学"}
49 fmt.Println(s2) // {{rose 19} 北京大学}
50
51 var s3 Student
52 s3.Person.name = "王五"
53 s3.Person.age = 19
54 s3.school = "清华大学"
55 fmt.Println(s3) // {{王五 19} 清华大学}
56
57 s3.name = "Ruby" // 可以简写
58 s3.age = 16 //
59 fmt.Println(s3) // {{Ruby 16} 清华大学}
60 }