在Go 中,複製切片需要考慮創建新的後備數組,以防止對原始數組的無意修改。有幾種簡潔且性能良好的方法可以實現此目的。
一種方法是使用追加函數:
copy := append([]T{}, orig...)
其中 T 是原始切片 orig 的元素類型。但是,存在使用內建複製函數的替代解決方案:
cpy := make([]T, len(orig)) copy(cpy, orig)
複製函數針對在語言內複製切片進行了最佳化。來自Go 文件:
“copy 內建函數將來源切片中的元素複製到目標切片中。... Copy 傳回複製的元素數量,這將是len(src) 的最小值和len(dst )。如果切片包含指標或具有指標欄位的結構,這些指標仍將指向與原始切片相同的值。
基準:
測試追加和複製方法揭示了相似的性能特徵:
基準測試結果表明兩種方法對於深度測試結果表明兩種方法對於深度測試結果表明兩種方法對於深度複製同樣有效切片。
以上是如何在 Go 中深度複製切片:追加與複製?的詳細內容。更多資訊請關注PHP中文網其他相關文章!