Go具有两种分配内存的机制,分别是使用内置函数new()和make().
1、new函数
new()函数可以给一个值类型的数据分配内存,调用成功后返回一个初始化块指针,new()函数的内存块指针,new()函数原型定义如下:
func new(Type) * Type
在调用new()函数时要注意,参数Type是一个类型而不是具体的数值,函数调用成功后返回该类型的内存指针,同事给类型初始化为“0”值。
2、make函数
make()函数用于给引用类型分配内存空间,比如像Slice,Map,Channel等。make()函数创建的是一个引用类型对象,而不是一个内存空间的指针。make()函数的原型定义如下:
func make(Type, size InterType) Type
make(T,args)函数的目的与new(T)不同。它仅用于创建Slice、Map和Channel,并返回类型T(不是*T)的一个被初始化了的(不是零)实例。之中差别的出现是由于这三种类型实质上是对在使用前必须进行初始化的数据结构的音译。