Go的内建函数new和make
2019-10-24 本文已影响0人
xuanxiao
new函数
返回T类型的指针
new(T)创建无类型限制
new(T)会向内存申请一块内存空间,并按照T类型进行零值填充,最后返回T类型对应零值在内存空间中的地址。
make函数
返回T类型
make(T, args)只能创建slice
、map
、channel
slice
、map
、channel
这三种类型在使用之前必须初始化,未初始化的时候都是nil,除了slice外是没法直接使用的(slice通过append()可以添加值,进行正常使用,但是append()函数本质也是重新初始化了一个slice)。以slice为例,slice包含:一直指向数据(内部是一个array)的指针,长度和容量,在未初始化的时候,slice为nil,以上这些都不存在,无法获取。make就是将这些填充了适当的值,进行了初始化