了解Go 中的切片容量和長度
透過教學學習Go 時,可能會遇到以下問題:
問題:
在下面的程式碼中,為什麼要切片 c和 d 是否使用不同的值和容量進行初始化?
func main() { a := make([]int, 5) b := make([]int, 0, 5) c := b[:2] d := c[2:5] }
答案:
在 Go 中,切片由陣列支持。當使用 make 建立切片時,後備數組將使用其零值進行初始化。在本例中,它是一個整數數組,每個整數都初始化為 0。
當 c 建立為 b 的切片時,它與 b 共用相同的支援數組。由於 b 是使用零長度數組建立的,因此後備數組的前兩個元素為 0。因此,c 的長度為 2,其元素均為 0。
d 被建立為c 從索引 2 開始。它也與 c 共享相同的後備數組。但是,它的容量不同,因為它是完整的切片表達式。完整切片表達式的容量等於其第一個索引和最後一個索引之間的差,在本例中為 5 - 2 = 3。
其他資源:
以上是為什麼 Go 切片 c 和 d 切片後的數值和容量不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!