在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 函数返回的是初始化的非零值。