目录
1.结构体
1.1 Golang语言面向对象编程说明
(1)Golang 没有类(class),Go语言的结构体(struct)与java的类(class)有同等地位
(2)Golang 面向对象非常简洁,没有传统OOP语言的继承,方法重载,构造函数等等
(3)Golang 仍然有面向对象编程的继承,封装和多态,但方式不一样
比如继承不使用extends 关键字,而是通过匿名字段来实现
1.2 声明结构体
基本语法:
type 结构体名称 struct{
field1 type
field2 type
}
举例:
type 结构体名称 struct{
field1 type
field2 type
}
1.3 字段/属性
(1)结构体字段 = 属性 = field
(2)可以是基本类型也可以是引用类型
1.4 创建结构体变量和访问结构体字段
1.5 使用注意事项
(1)结构体的所有字段在内存中是连续的st
(2)结构体的每个字段上,可以写上一个tag,该tag 可以通过反射机制获取,常见的使用场景是序列化和反序列化
2.方法
Golang中的方法是作用在指定的数据类型上的,因此自定义类型都可以有方法,不仅仅是struct
2.1 方法的声明和调用
type A struct{
Num int
}
func (a A)test(){
fmt.Println(a.Num)
}
(a A)体现test 方法是和A 类型绑定的
(1)方法的声明
func (receiver type) methodNme(参数列表)(返回值列表){
方法体
return 返回值
}
receiver type表示这个方法和type 这个类型绑定
2.2注意事项
(1)更改结构体变量通过结构体指针的方式
(2)方法的访问规则和函数一样
(3)如果一个类型实现了String()这个方法,那么fmt.Println会默认调用这个变量的String()进行输出
2.3 课后习题
baba
3.封装
3.1基本介绍
把抽象的字段和对字段的基本操作封装在一起,程序的其他包只有通过授权的操作(方法)才能对字段进行操作
(1)好处:隐藏实现细节,对数据进行验证,保证安全合理
(2)实现封装:通过包、方法对结构体中的属性进行封装
3.2 具体实现步骤
4.继承
4.1 嵌套匿名结构体基本语法基本语法
type Goods struct{
Name string
Price int
}
type Book struct{
Goods//嵌套
Writer string
}
4.2 便利性
(1)提高了代码的复用性
(2)代码的扩展性和维护性提高了
4.3 继承的深入讨论
(1)匿名结构体字段访问可以简化
4.4 多重继承
5.接口
6.实现接口vs继承
7.多态
7.1
7.2 类型断言