在 Golang 中,make
和 new
都是用来创建数据类型的。
new
用于创建一个指向该类型零值的指针。例如: var ptr *int = new(int)
会分配一个 int 类型大小的内存块,并将其初始化为零值,然后返回这个内存块的地址。
而 make
一般只用于创建 slice、map 和 channel 等引用类型(reference types),并且返回的不是指针,而是已经完成初始化之后的对象本身。
使用 make
初始化 slice:
slice := make([]int, 10)
使用 make
初始化 map:
m := make(map[string]int)
使用 make
初始化 channel:
ch := make(chan int)
总之,对于需要分配内存并初始化为零值或空值的基本类型和结构体变量,可以使用 new()
;对于需要分配内存并初始化为非零值或非空值的引用类型变量,则应该使用 make()
。