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进行初始化,然后才可以对他们进行操作。

posted @ 2025-04-07 17:31  搁浅~浅浅浅  阅读(49)  评论(0)    收藏  举报