1.& 和 *
&:取地址
*:根据地址取值
a := 100
b := &a // 100这个值的内存地址 (0xc000016298)
c := *b // 获取对应内存地址的数值 (100)
d := *&a // 100
2.new() 申请一个内存地址(分配内存)
var b2 = new(int)
*b2 = 100 // 这个内存地址的值为100
fmt.Println(*b2)
3.new()和make()的区别
new和make都是用来分配内存的;
new很少用,一般是用来给基本数据类型申请内存地址,string\int,返回的是对应类型的指针(返回:*string 、 *int);
make是用来给 slice 、map和chan申请内存的,make函数返回的是对应三个数据类型的本身