new和make区别

Adonia ·
更新时间:2024-09-20
· 820 次阅读

new

不会初始化内存,只会将内存置零
new(T)为类型T的新项分配已置零的内存空间,并返回它的地址,也就是一个*T的值。
用Go的术语来说,它返回一个指针,该指针指向新分配的,类型为T的零值。

make

内建函数make(T, args)不同于new(T)。它只用于创建slicemapchan,并返回类型为T(而非*T)的一个已初始化(而非零值)的值。

原因在于,这三种类型本质上为引用数据类型,在使用前必须初始化。例如,slice是一个具有三项内容的描述符,包含一个指向(数组内部)数据的指针、长度及容量,在这三项被初始化之前,该slicenil
对于slicemapchanmake用于初始化其内部的数据结构并准备好将要使用的值。

make只适用于slicemapchan,且不返回指针。若要获得明确的指针,请使用new分配内存。


作者:Life_Song



make new

需要 登录 后方可回复, 如果你还没有账号请 注册新账号