1、make()函数的作用,给切片slice,字典map,通道channel初始化,在内存中开辟一块空间
# 声明一个切片,未初始化前没有内存空间,所以为nil(nil切片不能直接赋值),返回值为空切片
var sli []string
# 使用make()初始化切片(初始化切片的长度和容量),初始化以后就有了自己的内存空间,
# 所以不是nil(非nil切片可以直接赋值),返回值为空切片
sli = make([]string, 5, 10)
# 此时可以给切片直接赋值
sli[0] = "是"
sli[1] = "你"
sli[2] = "吗"
2、区别:
make(T,args)只能为slice,map,channel三种类型的数据开辟空间,返回值为初始化后的T
new(T)可以为各种类型的数据开辟内存空间,返回值是一个指针,开辟内存空间的地址*T
3、通过new()函数来赋值
# 声明指针
var p *int
# 把new()创建的内存空间地址,赋值给指针p
p = new(int) # new(int)作用就是创建一个整型大小(4字节)的空间,返回开辟的内存地址
# 操作指针所指向的内存值
*p = 60
fmt.Println(*p)