首頁 >後端開發 >Golang >Go 切片:深度複製的附加與複製 – 哪個更有效?

Go 切片:深度複製的附加與複製 – 哪個更有效?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-10 21:00:15596瀏覽

Go Slices:  Append vs. Copy for Deep Copying – Which is More Efficient?

切片的高效深度複製

在 Go 中,建立切片的深度複製涉及將其內容複製到單獨的記憶體位置。這可確保對一個切片所做的任何修改不會影響另一個切片。

深度複製的一種方法是透過附加函數:

copy := append([]T{}, orig...)

這裡,原始切片 orig 被附加到一個空切片,使用自己的支援數組建立新的切片副本。

另一種方法使用內建副本函數:

cpy := make([]T, len(orig))
copy(cpy, orig)

這種方法直接將元素從 orig 複製到新建立的切片 cpy。

兩個解都有效地複製了切片中的值。但是,請務必注意,如果切片包含指標或帶有指標欄位的結構,則這些指標值仍將引用與原始切片中相同的位置。

對兩種方法進行基準測試可產生相當的性能:

BenchmarkCopy     100000         24724 ns/op
BenchmarkAppend   100000         24967 ns/op

彙編程式碼顯示追加和複製都可能執行內存零填充作為其

最終,追加和複製方法之間的選擇取決於個人偏好和性能考慮。然而,這兩種方法都可以有效地深度複製切片,從而在處理切片資料的單獨實例時確保資料完整性。

以上是Go 切片:深度複製的附加與複製 – 哪個更有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn