make([] int,0),[] int {}和* new([] int)之间的区别是什么?

时间:2017-03-14 19:55:46

标签: go slice

根据https://play.golang.org/p/7RPExbwOEU,他们都打印相同的长度和容量。初始化切片的三种方法之间有区别吗?有首选方式吗?我发现自己同时使用频率相同的make([]int, 0)[]int{}

1 个答案:

答案 0 :(得分:6)

初始化0长度切片。

make([]int, 0)

使用make是初始化具有不同长度的特定容量的切片的唯一方法。这会分配一个长度为0的切片,但容量为1024.

make([]int, 0, 1024)

这是一个切片文字,它也初始化一个0长度切片。使用此或make([]int, 0)完全是首选。

[]int{}

这会将指针初始化为切片,该切片会立即解除引用。切片本身尚未初始化,仍然为零,因此基本上什么都不做,相当于[]int(nil)

*new([]int)