关于golang:go-new-和-make-的区别

10次阅读

共计 225 个字符,预计需要花费 1 分钟才能阅读完成。

看起来二者没有什么区别,都在堆上分配内存,然而它们的行为不同,实用于不同的类型。

new(T) 为每个新的类型 T 调配一片内存,初始化为 0 并且返回类型为 * T 的内存地址:这种办法 返回一个指向类型为 T,值为 0 的地址的指针,它实用于值类型如数组和构造体;它相当于 &T{}。

make(T) 返回一个类型为 T 的初始值,它只实用于 3 种内建的援用类型:切片、map 和 channel

 new 只分配内存, make 用于 slice,map,和 channel 的初始化.

下图给出了区别:

正文完
 0