go new和make的区别
在 Go 语言中,new 和 make 都是用于内存分配的内置函数,但他们的用途和行为略有不同。
make: 只能用来分配及初始化类型为 slice,map 或 chan 的数据。make 函数会返回这三种类型的初始化值,而不是其零值或零值的指针。也就是说,当你 make 一个切片时,它将创建一个具有给定参数的切片,并返回一个可以立即使用的切片,而不是切片的指针。
s := make([]int, 5) // 创建一个长度为5的切片
m := make(map[string]int) // 创建一个空的字典
c := make(chan int) // 创建一个未指定大小的通道
new: 用来为一个值类型分配内存,并且将分配的内存初始化为 0 值,然后返回指向它的指针。
num := new(int)
fmt.Println(*num) // 输出'0'
总结一下,new 和 make 的主要区别在于它们分别应用于值类型和复合数据类型,同时 make 会初始化类型,而 new 返回的是类型的零值