在Go Programming Language一書中,作者陳述了以下內容(在第 4.2 節關于切片):[切片的]長度是切片元素的數量;它不能超過容量,通常是切片開頭和底層數組結尾之間的元素數。問題由于作者選擇使用“通?!边@個詞,這意味著實際上存在切片的容量與切片開頭和底層數組結尾之間的元素數量不同的情況——什么時候會這樣?換句話說,下面的表達式什么時候是true:cap(mySlice) != len(underlyingArray) - startIndexOfSlice我能想到的唯一情況是切片是nil,在這種情況下將沒有底層數組。
1 回答

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
完整的切片表達式可以將容量設置為低于完整的底層數組。
x := make([]string, 20)
y := x[0:10:10]
fmt.Println("x:", len(x), cap(x)) // prints x: 20 20
fmt.Println("y:", len(y), cap(y)) // prints y: 10 10
切片x和y共享相同的底層數組,但 的容量y小于 的容量x。
- 1 回答
- 0 關注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消