ホームページ > バックエンド開発 > Golang > Go でマップのディープ コピーを作成するにはどうすればよいですか?

Go でマップのディープ コピーを作成するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-29 02:01:14
オリジナル
209 人が閲覧しました

How to Create Deep Copies of Maps in Go?

Go でマップのディープ コピーを作成する

マップのコピーを手動で作成することもできますが、構築されたものを利用する方が便利な場合があります。 -in 関数またはライブラリ。

組み込み関数

残念ながら、Go には任意のマップのコピーを作成するための専用の組み込み関数はありません。

ライブラリとパッケージ

  • encoding/gob: このライブラリを使用すると、次のことが可能になります。マップを含む任意のデータ構造をエンコードおよびデコードします。元のマップをエンコードし、それを新しい変数にデコードすることで、ディープ コピーを作成できます。
import (
    "bytes"
    "encoding/gob"
    "fmt"
)

func main() {
    ori := map[string]int{
        "key":  3,
        "clef": 5,
    }

    // Encode the original map
    var mod bytes.Buffer
    enc := gob.NewEncoder(&mod)
    err := enc.Encode(ori)
    if err != nil {
        fmt.Println("Failed to encode map:", err)
        return
    }

    // Decode the encoded map into a new variable (deep copy)
    var cpy map[string]int
    dec := gob.NewDecoder(&mod)
    err = dec.Decode(&cpy)
    if err != nil {
        fmt.Println("Failed to decode map:", err)
        return
    }

    // Modify the copied map to demonstrate they are independent
    cpy["key"] = 2
    fmt.Println("Original map:", ori)
    fmt.Println("Copied map:", cpy)
}
ログイン後にコピー

これらのアプローチのいずれかを利用すると、Go でマップのディープ コピーを簡単に作成できます。

以上がGo でマップのディープ コピーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート