Golang では、Map は非常に一般的に使用されるデータ構造であり、キーと値のペアの形式でデータを保存したりアクセスしたりできます。ただし、マップ内のキーを変更する必要がある場合があります。これは比較的一般的な操作です。ただし、Go 言語の Map の Key は不変型です。つまり、Key の値を変更することはできません。では、マップのキーを変更するにはどうすればよいでしょうか?この記事では、Golang Mapのキーを変更する3つの方法を紹介します。
方法 1: 最初に古いキーを削除してから、新しいキーを追加します。
まず、最初に古いキーを削除してから、新しいキーをマップに追加します。この方法は比較的シンプルで実装は簡単ですが、Mapを2回操作する必要があり、少し面倒です。
サンプル コードは次のとおりです。
// 创建一个 Map 变量 m := map[string]int{ "apple": 1, "banana": 2, } // 删除旧的 Key,并添加一个新的 Key delete(m, "apple") m["orange"] = 3 // 输出 Map fmt.Println(m)
上記のコードでは、まず Map 変数を作成し、それに 2 つのキー (それぞれ 1 と 2 に対応する apple と Banana) を割り当てます。次に、delete()
関数を使用して、元のキー apple を削除しました。次に、マップに再度新しいキー (オレンジ) を追加し、値 3 を割り当てます。最後に、fmt.Println()
を通じてこのマップを出力します。
上記のコードを実行すると、次の出力が得られます:
map[banana:2 orange:3]
元のキー: apple が削除され、マップには 2 つのキー (バナナとオレンジ) だけが残っていることがわかります。そして、Key: orange が元の Key: apple を置き換えます。
もちろん、この方法にはいくつかの制限もあります。削除する Key が Map 内に存在しない場合、このメソッドは Key を変更するという目的を達成できません。
方法 2: 新しいキーを使用して古いキー値を上書きする
2 番目の方法はより簡単で、新しいキーを使用して古いキー値を上書きできます。この方法はマップ上で複数の操作を必要とせず、比較的単純ですが、いくつかの制限もあります。
サンプル コードは次のとおりです。
// 创建一个 Map 变量 m := map[string]int{ "apple": 1, "banana": 2, } // 用新的 Key 覆盖旧的 Key 的值 m["apple"] = 3 // 输出 Map fmt.Println(m)
上記のコードでは、まず Map 変数を作成し、それに 2 つのキー (それぞれ 1 と 2 に対応する apple と Banana) を割り当てます。次に、古い Key 値を新しい Key: apple で直接上書きします。つまり、Key: apple の値を 1 から 3 に変更します。最後に、fmt.Println()
を通じてこのマップを出力します。
上記のコードを実行すると、次の出力が得られます:
map[apple:3 banana:2]
ご覧のとおり、Key: apple の値が正常に変更されました。
もちろん、この方法にも限界があります。変更対象の Key が Map 内に存在しない場合、このメソッドは Key を変更するという目的を達成できません。
方法 3: サードパーティ ライブラリを使用する
上記の 2 つの方法に加えて、いくつかのサードパーティ ライブラリを使用して Golang マップのキーを変更することもできます。たとえば、gouuid
ライブラリの UUID()
関数を使用して、新しいキーを生成し、それを元のキーに割り当てることができます。この方法は非常に簡単ですが、サードパーティのライブラリを導入する必要があります。
以下はサンプル コードです:
import ( "github.com/satori/go.uuid" ) // 创建一个 Map 变量 m := map[string]int{ "apple": 1, "banana": 2, } // 使用第三方库生成新的 Key,替代旧的 Key newKey := uuid.NewV4().String() m[newKey] = m["apple"] delete(m, "apple") // 输出 Map fmt.Println(m)
上記のコードでは、最初に gouuid
ライブラリを導入して新しいキーを生成しました。次に、Map 変数を作成し、それに 2 つのキー (それぞれ 1 と 2 に対応するリンゴとバナナ) を割り当てました。次に、UUID()
関数を使用して新しいキーを生成し、それを元のキー: apple に割り当てます。つまり、Key: apple を新しいキーに置き換えます。最後に、delete()
関数を使用して、古いキー: apple を削除します。最後に、fmt.Println()
を通じてこのマップを出力します。
上記のコードを実行すると、次の出力が得られます。
map[4a5e45b7-465b-4b4c-88f1-6d6b3b0ee022:1 banana:2]
ご覧のとおり、UUID()
関数を使用して新しいキーを正常に生成し、追加 元のキー: apple を置き換えます。
まとめ
上記はGolang MapのKeyを変更する3つの方法です。もちろん、それぞれの方法には長所と短所があり、実情に応じて適切な方法を選択する必要があります。もっと良い方法がある場合は、コメント欄で共有してください。
以上がgolang マップ変更キーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。