最近有人推荐Effective Go,这本书算是给初学者看的,因为已经看多很多Go方面的书了,所以再看这本书,总体收获较小,文章地址:https://learnku.com/docs/effective-go/2020
讲述的知识里,有几点印象深刻一些,在这里分享出来
格式化
new和make区别
- new:用来分配内存的内建函数, 但与其它语言中的同名函数不同,它不会初始化内存,只会将内存置零。 也就是说,
new(T)
会为类型为T
的新项分配已置零的内存空间, 并返回它的地址,也就是一个类型为*T
- make:只用于创建切片、映射和信道,并返回类型为
T
(而非*T
)的一个已初始化 (而非置零)的值。 出现这种用差异的原因在于,这三种类型本质上为引用数据类型,它们在使用前必须初始化
- new:用来分配内存的内建函数, 但与其它语言中的同名函数不同,它不会初始化内存,只会将内存置零。 也就是说,
数组和切片的关系
切片是对数组的引用
如果切片范围没有超过数组长度,则两者可以认为是完全相同的东西
如果切片范围超过数组长度,会自动创建一个新的底层数组,取消对原数组的引用,数组和切片便分隔开了
type
- type File struct/type Integer int:这是结构体,也是类型,实现了函数便是类
- type IFile interface:这是接口,如果类中的函数包含接口中的函数,则这个类实现了该接口