Go Notes 1
多重赋值,短变量声明,interface{}和interface{}指针,Slice 扩容,基于类型创建的方法
1、多重赋值
先计算等号左边的索引表达式和取值表达式,再计算等号右边的表达式,最后赋值。
Eg.
|
|
先计算左边,k(1),s[1] ,再计算右边。结果k=0,s[1]=3
2、短变量声明
当多值赋值时,:= 左边的变量无论声明与否都可以
Eg.
|
|
上面的代码是正常的
3、interface{}和interface指针
Eg.
|
|
f1(s)和f1(q)能通过编译,但f2(s),f2(q)不能通过编译。
函数参数为interface{}时可以接受任何类型的参数,包括用户自定义类型等,及时是接受指针类型也用interface{},而不是用*interface{}.
永远不要使用一个指针指向一个接口类型,因为他已经是一个指针。
4、Slice扩容导致的问题
Eg.
|
|
S1 和s2 使用同一底层数组,一个改变会影响另一个。但是append之后会生成新的数组,不再相互影响
5、基于类型创建的方法
Eg.
|
|
基于类型创建的方法必须定义在同一个包里面,解决办法,可以定义一个新的类型