make和new的区别
make和new的区别---(√)
make和new都是用于创建新对象的内置函数,
但make用于创建引用类型的对象,返回的是一个已经初始化了的对象;
而new用于创建值类型的对象,返回的是一个指向新对象的指针。
1.初始化的区别
make和new都是golang用来分配内存的內建函数,且在堆上分配内存。但不同的是,new分配空间后,是将内存清零,并没有初始化内存;而make分配空间后,是初始化内存,而不是清零。
2.分配内存的区别
new(T)为每个类型分配一片内存,而make专门用于为slice,map和chan三种类型分配内存。
3.返回类型的区别
new返回的是指向类型的指针;而make的返回类型与其参数的类型相同,而不是指向它的指针,因为这三种数据类型本身就是引用类型。简单理解就是:new返回指针,而make返回的是类型。
4.语法上的区别
new的语法是:func new(Type) *Type;而make的语法为:func make(t Type, size …IntegerType) Type。
5.实用性的区别
目前来看new函数并不常用,大家更喜欢使用短语句声明的方式。但是make就不一样了,它的地位无可替代,在使用slice、map以及channel的时候,还是要使用make进行初始化,然后才可以对他们进行操作。

浙公网安备 33010602011771号