1、Go语言的new和make函数

Go语言中有两个内置函数,new和make,它们都是用于分配内存的,但是它们的功能和使用方法是有区别的。

2、new函数

new函数是Go语言内置的一个函数,它的作用是用于分配内存,并且返回一个指向该内存的指针,它的形式如下:
func new(Type) *Type
其中Type可以是任意的Go语言类型,比如int、struct等,返回的是一个指向Type类型的指针。new函数会分配内存,并将内存置为零值,比如int类型的零值是0,struct类型的零值是每个字段都是零值。

3、make函数

make函数也是Go语言内置的一个函数,它的作用也是用于分配内存,但它只能用于slice、map和channel的初始化,它的形式如下:
func make(Type, size IntegerType) Type
其中Type只能是slice、map和channel,size表示分配的内存大小,IntegerType表示size的类型,一般都是int。make函数不仅会分配内存,还会对分配的内存进行初始化,比如slice会分配一个数组,并且将数组的长度和容量都设置成size,map会分配一个Hash Table,channel会分配一个channel缓冲区。

4、new和make的区别

从上面的介绍可以看出,new和make的区别是: (1)new函数可以用于任意类型的内存分配,而make函数只能用于slice、map和channel的分配; (2)new函数只是分配内存,而make函数不仅分配内存,还会对内存进行初始化; (3)new函数返回的是一个指向该类型的指针,而make函数返回的是一个类型本身,而不是指针。