首頁 >後端開發 >Golang >如何在 Go 中深度複製切片:追加與複製?

如何在 Go 中深度複製切片:追加與複製?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-01 03:44:10684瀏覽

How to Deep Copy a Slice in Go: Append vs. Copy?

如何在Go 中簡潔高效地深度複製切片

在Go 中,複製切片需要考慮創建新的後備數組,以防止對原始數組的無意修改。有幾種簡潔且性能良好的方法可以實現此目的。

一種方法是使用追加函數:

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

其中 T 是原始切片 orig 的元素類型。但是,存在使用內建複製函數的替代解決方案:

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

複製函數針對在語言內複製切片進行了最佳化。來自Go 文件:

“copy 內建函數將來源切片中的元素複製到目標切片中。... Copy 傳回複製的元素數量,這將是len(src) 的最小值和len(dst )。如果切片包含指標或具有指標欄位的結構,這些指標仍將指向與原始切片相同的值。

基準:

測試追加和複製方法揭示了相似的性能特徵:

基準測試結果表明兩種方法對於深度測試結果表明兩種方法對於深度測試結果表明兩種方法對於深度複製同樣有效切片。

以上是如何在 Go 中深度複製切片:追加與複製?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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