Golang面向对象
1. Golang没有类,Go的结构体相对于其它编程语言的类
2. Golang去掉了传统OOP语言的继承、方法重载、构造函数和析构函数、隐藏的指针等等
3. Golang仍有面向对象编程的继承、封装和多态的特性,只是实现方式不同
创建结构体实例的四种方法
结构体的注意事项
1. 结构体的所有字段在内存中是连续的
2. 对一个结构体进行type重新定义,Golang认为是新的数据类型,但相互间可以强转
3. 结构体的每个字段上,可以写上一个tag,该tag可以通过反射机制获取,常见的使用场景就是序列化和反序列化
4. 如果一个变量实现了String()方法,那么fmt.Println默认会调用这个变量的String()进行输出——该功能与java的toString()一致
5. 不管调用形式如何,真正决定是值拷贝还是地址拷贝,看这个方法是和哪个类型绑定——如func (cat *Cat)为地址拷贝,func (cat Cat)为值拷贝
结构体序列化
结构体绑定方法
创建结构体实例指定字段值
工厂模式
继承
结构体可以使用嵌套结构体所有的方法和字段,无论首字母大小写
接口
一个自定义类型(不止是结构体)只有实现了某个接口,才能将自定义类型的实例(变量)赋给接口类型
类型断言
类型断言(Type Assertion)是一个使用在接口值上的操作,用于检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型。
文件操作
读取文件——缓存读取
读取文件——一次性读取(适用文件不大情况)
写文件操作
通过缓存区写文件
序列化/反序列化操作