Go语言中new和make的区别

一、

new( )

new(T)创建一个没有任何数据的类型为T的实例,并返回该实例的指针;



二、

make( )

make(T, args)只能创建 slice、map和channel,并且返回一个有初始值args(非零)的T类型的实例,非指针。

三、二者异同

二者都是内存的分配(堆上),但是make只用于slice、map以及channel的初始化(非零值);而new用于类型的内存分配,并且内存置为零。所以在我们编写程序的时候,就可以根据自己的需要很好的选择了。

make返回的还是这三个引用类型本身;而new返回的是指向类型的指针。

你可能感兴趣的:(Go语言中new和make的区别)