关于go:new与make的区别

44次阅读

共计 465 个字符,预计需要花费 2 分钟才能阅读完成。

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

正文完
 0