init函数

一个包下可以有多个 init 函数,每个文件也可以有多个 init 函数。

多个 init 函数按照它们的文件名顺序逐个初始化。

应用初始化时初始化工作的顺序是,从被导入的最深层包开始进行初始化,层层递出最后到 main 包。

不管包被导入多少次,包内的 init 函数只会执行一次。

但包级别变量的初始化先于包内 init 函数的执行。

Go 中 uintptr 和 unsafe.Pointer 的区别?

Go 语言中不同的类型如何比较是否相等?

答:像 string,int,float interface 等可以通过 reflect.DeepEqual 和等于号进行比较,像 slice,struct,map 则一般使用 reflect.DeepEqual 来检测是否相等。

defer关键字,defer的时机,顺序

for range时地址会发生变化吗

不会,例如for a,b := range c , ab在内存中只会存一份,相当于是不断从c中取值赋给a,b,但是a,b的地址是不变的