Go语言的结构体嵌套:
1.模拟继承性,在下列结构中,B要访问A的属性,可以直接通过“.”来访问或者调用
type A struct {
field
}
type B struct{
A //匿名字段
}
package main
import "fmt"
func main(){
//面向对象:oop
// 1。创建父类的对象
p1 := Person{name:"张三",age:30}
fmt.Println(p1)
fmt.Println(p1.name,p1.age)
// 2.创建子类的对象
s1 := Student{Person{name:"李四",age:18},"中学"}
fmt.Println(s1)
s2 := Student{Person:Person{name:"王五",age:17},school:"北京大学"}
fmt.Println(s2)
var s3 Student
s3.Person.name = "rose"
s3.Person.age = 15
s3.school = "清华大学"
// 提升字段,Person里的name和age,相当于Student就是提升字段,Student可以直接访问Person中的字段
s3.name = "赵六"
s3.age = 16
fmt.Println("s3是: ",s3)
}
//定义父类
type Person struct {
name string
age int
}
type Student struct {
Person //模拟继承结构
school string //子类的新增属性
}
//结果
{张三 30}
张三 30
{{李四 18} 中学}
{{王五 17} 北京大学}
s3是: {{赵六 16} 清华大学}
- 模拟聚合关系,在上一篇文章,D要访问C中的字段需要通过c来访问
type C struct{
field
}
type D struct{
c C //聚合关系
}
网友评论