切片與映射參數:了解差異
在 Go 中,切片和映射都充當引用類型。修改這些結構中的元素會將變更傳播到所有引用變數。然而,添加新元素時會出現差異。
映射是指向其底層資料結構的指針,在新增元素時保留相同的引用位址。這意味著透過多個引用所做的任何更改都會反映在所有實例中。
相反,切片由包含指向支援數組、長度和容量的指標的輕量級結構表示。新增元素需要建立一個具有更新長度的新切片頭,並且可能還需要一個新的支援陣列。此變更不會傳播到原始切片標頭,從而導致注意到的觀察結果。
這種差異的根本原因在於底層實作。映射是指針,而切片是結構。因此,映射中的指標操作允許廣播更改,而在附加元素時必須重新建立切片標頭。
為了對齊它們的行為,切片可以實現為指針,但由於有限,很少使用語言支援和返回新切片的流行。
以上是Go 切片與映射:為什麼它們在添加元素時表現不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!