map はアクセスする必要があるデータをすぐに見つけることができるため、golang では map を使用することが非常に一般的ですが、map を使用すると、マップ内の値を変更する必要がある状況によく遭遇します。 golang でマップを変更する方法は他の言語とは少し異なりますので、以下で見てみましょう。
golang では、map は make 関数を通じて作成できる参照型です。以下はマップの作成例です。
m := make(map[string]int)
マップのキー値の型はそれぞれ string と int です。
次のメソッドを使用して要素をマップに追加できます:
m["one"] = 1
マップ内の要素を変更したい場合はどうすればよいですか? golang でマップ内の要素を変更する場合、添字を使用して要素を変更することはできないことに注意してください。代わりに、要素を削除および追加するマップ独自のメソッドを使用して変更を行う必要があります。以下はマップを変更する例です。
m := make(map[string]int) m["one"] = 1 fmt.Println(m) // 修改元素 delete(m, "one") // 删除指定元素 m["two"] = 2 // 添加修改后的元素 fmt.Println(m)
ご覧のとおり、変更する必要がある要素「one」については、削除関数を使用して要素を削除し、変更された要素を追加する必要があります。要素を追加することで要素を追加します。最終出力は、変更されたmap{"two":2}です。
ただし、要素がマップ内に存在しない場合、delete 関数を直接使用して要素を削除すると、プログラムがパニックを引き起こすことに注意してください。したがって、マップを変更する場合は、まずマップ内に要素が存在するかどうかを確認し、存在する場合は削除操作を実行する必要があります。以下は、要素が存在するかどうかを判断し、マップを変更する例です。
m := make(map[string]int) m["one"] = 1 fmt.Println(m) // 判断元素是否存在 if _, ok := m["one"]; ok { // 存在则进行删除操作 delete(m, "one") m["two"] = 2 // 添加修改后的元素 } fmt.Println(m)
上記の方法により、マップ内の要素を安全に変更できます。
上記の変更方法に加えて、より特殊な変更方法もあります。それは、範囲を使用してマップを横断し、マップ内の要素を変更することです。 range は、マップを移動するときに要素自体ではなく、マップ内の要素のコピーを返すため、コピーを変更することでマップの要素を変更できます。以下は、レンジ トラバーサル マップを使用して変更する例です。
m := make(map[string]int) m["one"] = 1 fmt.Println(m) for key, value := range m { if key == "one" { m[key] = 2 // 修改副本 } } fmt.Println(m)
上記のレンジ トラバーサル メソッドを通じて、マップ内の要素を変更するという目的を達成します。
要約すると、golang でマップを変更する方法は他の言語ほど単純ではありませんが、要素の削除と追加、および範囲トラバーサルを使用することで、マップ内の要素を変更するという目的を達成できます。もちろん、実際の開発では、ニーズに応じて適切な変更方法を選択する必要があります。
以上がgolangマップの変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。