关于go:new与make的区别

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理