Golang では、複数のマップをマージするには、マージされた値として、目的の結果マップの値の型を考慮する必要があります。同じキーに関連付けられた複数の値を含む場合があります。これを実現するには、結果マップの値のタイプとしてスライスを使用することをお勧めします。
単純なマージを実行するには、提供されているサンプル コードを修正して、結果マップの同じキーに関連付けられたスライスにソース マップの値を追加することができます。
<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>
この例では、ms は可変長パラメータであり、任意の数のパラメータを渡すことができます。マージ関数にマップします。
重複をフィルタリングして、結果マップに値が 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 { // 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>
ここで、結果マップに値を追加する前に、コードは (キー, 値) ペアが以前に追加されているかどうかをチェックして、重複を防ぎます。
以上が重複する値を避けながら Golang でマップをマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。