Go でのディープ マップのコピー: 手作りを超えて
マップのような複雑なデータ構造をコピーするのは、気が遠くなる作業になる場合があります。 Go には任意のマップをコピーするためだけの組み込み関数がありませんが、encoding/gob パッケージは強力なソリューションを提供します。
encoding/gob パッケージの使用
エンコーディング/gob パッケージを使用すると、データをエンコードおよびデコードできるため、複雑な構造であってもディープ コピーが可能になります。このパッケージをマップのコピーに活用する方法を見てみましょう:
func main() { ori := map[string]int{ "key": 3, "clef": 5, } var mod bytes.Buffer enc := gob.NewEncoder(&mod) dec := gob.NewDecoder(&mod) err := enc.Encode(ori) if err != nil { log.Fatal("encode error:", err) } var cpy map[string]int err = dec.Decode(&cpy) if err != nil { log.Fatal("decode error:", err) } cpy["key"] = 2 }
encoding/gob を使用する利点
この方法にはいくつかの利点があります:
結論
Go にはマップのコピー専用の機能がないかもしれませんが、エンコーディング/gob パッケージは堅牢で柔軟なソリューションを提供します。ディープ コピー機能により、任意のマップをコピーするのに理想的な選択肢となり、元のマップとコピーされたマップがメモリ内で独立していることが保証されます。
以上がGo の「encoding/gob」パッケージはどのようにしてディープ マップ コピーを実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。