golangの配列のコピー方法
Go言語には配列をコピーするための方法がいくつかあります。
- ループを使用して反復処理をする : for ループを使用して、配列の要素を 1 つずつ別の配列にコピーできます。
func copyArray(source []int, destination []int) {
for i := 0; i < len(source); i++ {
destination[i] = source[i]
}
}
- コピーする
func copyArray(source []int, destination []int) {
copy(destination, source)
}
- スライス演算子([:])を使用して、配列要素のスライスを別の配列にコピーできます。
func copyArray(source []int, destination []int) {
copy(destination[:], source[:])
}
上記3種類の方法は、いずれも参照のコピー、すなわち配列の内容ではなく配列の参照をコピーする「シャローコピー」であることに注意。配列の内容ではなく参照をコピーする「ディープコピー」を実施する場合は、ループを使用して反復処理するか、copy関数とスライス演算子[:]を組み合わせて実施することができる。