:= 和 = 的区别
使用 := 时
等式左边必须要有未声明的变量(可以有已声明过的);
自动类型推断;
不可用于全局变量,只用于局部变量
使用 = 时
必须要声明类型
可用于全局变量
new()和make()的区别
都在堆上分配内存,行为不同,适用于不同的类型。
new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:
这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}。
make(T) 返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:切片、map 和 channel
换言之,new 函数分配内存,make 函数初始化;下图给出了区别: