new和make区别

温暖的大牛 23 0 PDF 2021-02-07 19:02:40

new 不会初始化内存,只会将内存置零。 new(T)为类型T的新项分配已置零的内存空间,并返回它的地址,也就是一个*T的值。 用Go的术语来说,它返回一个指针,该指针指向新分配的,类型为T的零值。 make 内建函数make(T, args)不同于new(T)。它只用于创建slice、map和chan,并返回类型为T(而非*T)的一个已初始化(而非零值)的值。 原因在于,这三种类型本质上为引用数据类型,在使用前必须初始化。例如,slice是一个具有三项内容的描述符,包含一个指向(数组内部)数据的指针、长度及容量,在这三项被初始化之前,该slice为nil。 对于slice、map和chan,

用户评论
请输入评论内容
评分:
暂无评论