new()与make()的区别

//  new()分配内存。第一个参数是一个类型,不是一个值,返回的值是一个指向新分配该类型零值的指针
func new(Type) *Type

// make()分配并初始化一个类型的对象,仅限slice,map,chan。
// 和new() 一样,第一个参数是一个类型,而不是一个值
// 与new()不同,make()的返回类型与它的参数类型相同
// 而不是指向它的指针。结果的规格取决于类型。
// slice:大小可以指定长度。切片的容量等于它的长度。
// 第二个整数参数可以指定不同的容量;它必须不小于长度
// 例如,make([]int, 0, 10) 分配一个大小为10底层数组
// 并返回长度为 0、容量为 10 的切片。
// Map:一个空的map被分配了足够的空间来存放指定数量的元素
// 大小可以省略,在这种情况下分配一个小的起始大小
// Channel: 使用指定的缓冲容量初始化通道的缓冲区(有缓冲)
// 如果为零,或省略大小,则channel为无缓冲
func make(t Type, size ...IntegerType) Type

zhaobuqi
1 声望1 粉丝

« 上一篇
互斥锁Mutex
下一篇 »
slice底层实现