new和和make区别区别
new
不会初始化内存,只会将内存置零置零。
new(T)为类型T的新项分配已置零的内存空间,并返回它的地址,也就是一个*T的值。
用Go的术语来说,它返回一个指针,该指针指向新分配的,类型为T的零值。
make
内建函数make(T, args)不同于new(T)。它只用于创建slice、map和chan,并返回类型为T(而非*T)的一个已初始化已初始化(而非零值零值)的
值。
原因在于,这三种类型本质上为引用数据类型,在使用前必须初始化。例如,slice是一个具有三项内容的描述符,包含一个指
向(数组内部)数据的指针、长度及容量,在这三项被初始化之前,该slice为nil。
对于slice、map和chan,make用于初始化其内部的数据结构并准备好将要使用的值。
make只适用于slice、map和chan,且不返回指针。若要获得明确的指针,请使用new分配内存。
作者:Life_Song
评论0
最新资源