在 Go 世界中,切片是一種基本的資料結構。然而,它們的容量和長度有時會讓初學者感到困惑。讓我們透過一個實際的例子來深入研究這些概念。
func main() { a := make([]int, 5) // [0,0,0,0,0] len=5 cap=5 b := make([]int, 0, 5) // [] len=0 cap=5 c := b[:2] // [0,0] len=2 cap=5 d := c[2:5] // [0,0,0] len=3 cap=3 }
理解切片初始化
a 和 b 都是使用 make 初始化的,但參數不同。 a 初始化一個長度為 5、容量為 5 的整數數組,而 b 則初始化一個容量為 5 的空數組。
零值和陣列初始化
Go 的未初始化變數的概念在這裡很重要。當您建立變數而未明確設定其值時,它將使用其零值進行初始化。對於整數數組,這意味著一個包含全零的數組。
切片和零值
當您使用[:2] 切片b 時,您將建立一個新切片c.該切片指向與b 相同的後備數組,但僅指向前兩個元素。由於後備數組是用零初始化的,因此 c 將包含元素 [0,0]。
切片和容量
最後,當您使用 [2 切片 c :5],您建立了一個新切片 d。該切片與 c 共享相同的支援數組,但具有不同的索引。 d 的容量為 5-2 = 3,因為它代表切片後後備數組中剩餘的元素。
以上是Go 切片的長度和容量有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!