答案是您不直接分配一个 数组 ,而是 在创建 slice 时 让Go为您分配一个 数组 。
内置的函数
make([]T, length, capacity)创建了一个切片 和它后面的阵列 ,并且没有(傻)上的值编译时间常数-
限制性
length和
capacity。正如Go语言规范中所说:
使用创建的切片
make始终分配一个新的隐藏数组,返回的切片值将引用该数组。
所以我们可以这样写:
n := 12 s := make([]int, n, 2*n)
并为数组分配了size
2*n,并将
s切片初始化为它的前半部分。
我不确定为什么Go不能
[n]int直接分配数组,因为您可以间接进行分配,但是答案很明确:“ 在Go中,多数时候使用切片而不是数组。 ”



