在Golang中,new
和 make
是两个用于分配内存的内建函数。
-
new
函数:new
函数用于分配并初始化一个值的指针,返回指针。new
函数的参数是一个类型,并返回该类型的指针。- 分配的内存被置零,也就是每个位都被设置为零值。
new
函数返回的是指向新分配的零值的指针。
示例:
var p *int p = new(int) *p = 42 fmt.Println(*p) // 输出: 42
-
make
函数:make
函数用于创建内置引用类型(如slice
、map
和channel
)的对象。make
函数的参数是一个类型和一个长度(可选,不适用于channel
)。make
函数返回该类型的初始化的非零值。
示例:
var s []int s = make([]int, 5, 10) s[0] = 1 fmt.Println(s) // 输出: [1 0 0 0 0]
综上所述,new
函数返回的是指向零值的指针,而 make
函数返回的是初始化的非零值。