Go语言中的OOP
# 一、Go语言中的OOP
# 示例代码
package main
import "fmt"
func main() {
/*
面向对象: OOP
Go语言的结构体嵌套:
1.模拟嵌套继承性: is - a(子类是一个特殊的父类,一旦满足这样的范式;两个类就可以使用继承关系了)
type A struct{
field
}
type B struct {
A //匿名字段(A struct中的字段相对于B struct是提升字段;那么B struct就可以直接访问A struct中的字段)
}
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)
s1 := Student{Person{"李四", 20}, "清华大学"}
fmt.Println(s1)
fmt.Println(s1.Person.name, s1.Person.age, s1.school)
s2 := Student{Person: Person{name: "rose", age: 18}, school: "北京大学"}
fmt.Println(s2)
var s3 Student
s3.Person.name = "王五"
s3.Person.age = 19
s3.school = "清华大学"
fmt.Println(s3)
//提升字段
s3.name = "Ruby"
s3.age = 16
fmt.Println(s3)
fmt.Println(s1.name, s1.age, s1.school)
fmt.Println(s2.name, s2.age, s2.school)
fmt.Println(s3.name, s3.age, s3.school)
/*
s3.Person.name ---> s3.name
Student结构体将Person结构体作为一个匿名字段了
那么Person中的字段,对于Student来讲,就是提升字段
Student对象直接访问Person中的字段
*/
}
//1.定义父类
type Person struct {
name string
age int
}
//2.定义子类
type Student struct {
Person //模拟继承结构(这里的Person就是匿名结构体)
school string // 子类的新增属性
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
上次更新: 2024/04/09, 16:48:42
- 01
- AWS NAT-NetWork-Firwalld配置(一)04-09
- 02
- AWS NAT-NetWork-Firwalld配置(二)04-09
- 03
- kubernetes部署minio对象存储01-18