go常识

作者: Chris_Schiller | 来源:发表于2018-08-31 21:09 被阅读0次

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.方法中对结构体成员操作或不能修改成员的值,只有当接受者为指针时

相关文章

网友评论

      本文标题:go常识

      本文链接:https://www.haomeiwen.com/subject/lgbewftx.html