Golang でのマップの結合
Golang で複数のマップを 1 つの結合マップに結合するのは一般的なタスクです。 3 つのマップがあるとします。
目標は、これらのマップをマージすることですID キーに基づいて、結果は次のようになります:
単純なマージ
マップをマージするには、各入力マップを反復処理し、関連付けられた値を追加できます。各キーは結果マップのスライスに割り当てられます。
<code class="go">func merge(ms ...map[string]string) map[string][]string { res := map[string][]string{} for _, m := range ms { for k, v := range m { res[k] = append(res[k], v) } } return res }</code>
重複の回避
場合によっては、マージされたマップ内の値の重複を避けたいことがあります。これを実現するには、追加する前に重複をチェックします。
<code class="go">func merge(ms ...map[string]string) map[string][]string { res := map[string][]string{} for _, m := range ms { srcMap: for k, v := range m { // Check if (k,v) was added before: for _, v2 := range res[k] { if v == v2 { continue srcMap } } res[k] = append(res[k], v) } } return res }</code>
使用例
<code class="go">m1 := map[string]string{"id_1": "val_1"} m2 := map[string]string{"id_2": "val_2", "id_1": "val_1"} m3 := map[string]string{"id_1": "val_3"} res := merge(m1, m2, m3) fmt.Println(res)</code>
出力:
map[id_1:[val_1 val_3] id_2:[val_2]]
以上がGolang でマップをマージし、値の重複を避けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。