1.go为什么把变量放在前面
https://blog.golang.org/gos-declaration-syntax
2.数组可以不显示指定数组长度, 而用...代替
arr := [...]int{1,2,3,4,5}
3.数组的奇怪初始化方法
arr:=[...]int{4: -1} //它表示数组的前四个元素为默认值,最后一个为-1,共5个元素
4.数组初始化切片和byte初始化切片一样,可以用[:]
5.当切片容量与长度相同时,如果此时给切片追加一个元素,此时会先将容量变为长度的2被,然后加追加元素放入。
6.一个切片要复制另一个切片,而不希望共享底层内存,那么就用copy(dest, src)
7.map的key的取值必须能够用==比较,所以不能为数组,切片,map,而val可以为任意类型。
8.map是线程不安全地 ,一个goroutine在对map进行写操作时,另一个线程不能够对他进行读写操作,否则会抛出异常
这个问题有两个解决办法:1.对map进行枷锁 2.使用security map
9.像是map、byte这种类型,在使用时,如果cap不足以存放全部数据时会,就会自动扩大,但为什么在初始化时还可以设定cap呢
因为如果可以预估出将会用到的大小,并以此进行初始化,那么能很大程度提高对资源的合理利用,积少成多提高系统性能
10.可以使用type city string或
type (
B1 int
)来自定义类型名,但个人不建议这么做,这样会浪费别人阅读你代码的时间
11.此外,当使用type定义的自定义类型,当涉及函数调用,入参为自定义类型对应的基础类型,是不能够传参的,需要再强转为基础类型,两个具有相同基础类型的自定义类型,也不能够直接进行互操作,必须要先转化为基础类型
12 一个结构体中,同一个接受者不能,方法名不能相同,即不支持重载,此外同一个结构体中的方法名和成员名不能相同。
13.方法中对结构体成员操作或不能修改成员的值,只有当接受者为指针时
网友评论