对于引用类型的变量,我们在使用的时候不仅要声明它,还要为它分配内存空间,否则我们的值就没办法存储
而对于值类型的声明不需要分配内存空间,是因为它们在声明的时候已经默认分配好了内存空间
//会触发panic的两段代码
var a *int
*a = 100
fmt.Println(*a)
var b map[string]int
b["sandy"] = 100
fmt.Println(b)
new和make 都是用来内存分配的。。
make只适用于slice、map、channel的初始化,返回的是这3个引用类型本身。。
new用于类型的内存分配,并且赋值该类型对应的0值,返回的是指向类型的指针。。
new函数具体干了那些事情:
1分配内存 2设置零值 3返回指针(重要)
new不常用
现实编码中我们通常都是采用短语句方式声明或者结构体字面量的方式声明
i : =0
u := user{}