golang マップ変更キー

WBOY
リリース: 2023-05-15 09:17:07
オリジナル
1336 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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