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 }