map1 = [id: id_1, val: val_1]、map2 = [id: id_2, val: val_2]、および map3 = [id: id_1, val: val_3] を 1 つの結果マップにまとめます。キーベースのマージが必要で、結果マップは次のようになります。
result_map = [id: id_1 val: {val_1, val_3}, id: id_2 var: {val_2}]
マップは問題なく結合できます。ただし、結果のマップには同じキーの複数の値が含まれる可能性があるため、値のタイプとしてスライスを使用することが賢明です (例: map[string][]string.
マージ操作にはマップを反復処理する必要があります)マージしてから、ソース マップの値を結果マップの同じキーに関連付けられたスライスに追加します。拡張スライスを結果マップのキーに再割り当てすることを忘れないでください。
基本的なアプローチは次のとおりです:
<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>
前述の merge() メソッドでは重複エントリが許可されます。 。たとえば、"id_1": "val_1" が複数の入力マップに出現する場合、ターゲット マップ内で繰り返されます (例: "id_1": ["val_1", "val_1", "val_x"])。重複を排除し、「id_1」:「val_1」が 1 回だけ表示されるようにするには、追加のチェックが必要です:
<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 { for _, v2 := range res[k] { if v == v2 { continue srcMap } } res[k] = append(res[k], v) } } return res }</code>
以上がGolang で複数のマップをマージし、重複する値を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。