在Golang中,我們可以使用內建的make()
函數來創建具有給定初始長度和容量的切片。設置切片容量的要點是什麼?
考慮以下行,片的長度被設置爲1,其容量3:
func main() {
var slice = make([]int, 1, 3)
slice[0] = 1
slice = append(slice, 6, 0, 2, 4, 3, 1)
fmt.Println(slice)
}
我驚奇地看到,這個程序打印:
[1 6 0 2 4 3 1]
這讓我想知道 - 如果append()
可以簡單地吹過它,最初定義切片的容量是什麼點?設置足夠大的容量是否有性能提升?
在某一點上,它停止加倍和在25倍%的增量開始增加。我認爲這發生在1024個元素之後。 –
這不僅僅是複製操作需要時間,它也是alloc。 – Adrian