寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

goでsliceのdeepcopyをする

タイトルのとおりなんですが、 goでsliceのディープコピーを作りたかったので。

やり方は以下。

orig := []string{"a", "b", "c", "d", "e", "f"}  // 元sliceデータ
 
fmt.Printf("%p, %v\n", orig, orig)              // 0x10438150, [a b c d e f] 
 
copy := append([]string{}, orig...)            // sliceをコピーする
 
fmt.Printf("%p, %v\n", copy, copy)           // 0x10438180, [a b c d e f] ← 異なるポインタになっている。

という感じで結構簡単にコピーできた。

参考URL : go - Concisely deep copy a slice? - Stack Overflow