在 Go 语言中,可能常见的与 make
相关的对比面试题是 make
和 new
的区别。
make
用于创建切片、映射和通道,并对其进行初始化。例如:
slice := make([]int, 5) // 创建一个长度为 5 的整数切片
map1 := make(map[string]int) // 创建一个字符串到整数的映射
ch := make(chan int) // 创建一个无缓冲整数通道
new
用于为值类型分配内存,并返回一个指向该内存的指针。例如:
var p *int
p = new(int) // 分配一个整数的内存空间,并返回指向它的指针
主要区别包括:
-
make
用于初始化切片、映射和通道等引用类型;new
用于分配值类型的内存。 -
make
返回的是初始化后的类型本身;new
返回的是指向新分配内存的指针。 -
make
可以指定长度、容量等参数来初始化特定类型;new
只负责分配内存。