官方回答:
切片的扩展发生在以下情况下:
-
当你向切片追加元素时,如果底层数组的容量不足以容纳更多的元素,Go 将会分配一个新的更大的底层数组,并将原有的元素复制到新数组中。这样做的目的是为了确保足够的空间来存储新添加的元素。通常情况下,新分配的数组的容量会是原来的两倍,但具体的增长策略由 Go 运行时决定。
-
通过
make()
函数创建切片时,可以指定切片的初始长度和容量。如果你提供了一个比初始长度更大的容量参数,Go 将会为切片分配一个具有指定容量的底层数组。这种情况下,切片的扩展是立即发生的,而不需要等到追加元素时才扩展。
注意点:
我做题的时候发现追加是指append的时候。
但是这种情况是不属于追加的
func main(){
//dp:=make([]int,50) 正确
dp:=make([]int,0) //错误
dp[1]=1
dp[2]=2
}
如果采用上述的例子会造成:
index out of range [1] with length 0
注意看这会的dp并没有在下标1,2有空间存在所以不能插入。