Fusionner des cartes dans Golang
Combiner plusieurs cartes en une seule carte fusionnée dans Golang est une tâche courante. Supposons que vous ayez trois cartes :
Le but est de fusionner ces cartes basé sur la clé d'identification, ce qui donne :
Fusion simple
Pour fusionner les cartes, vous pouvez parcourir chaque carte d'entrée et ajouter les valeurs associées à chaque clé vers une tranche de la carte de résultats.
<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>
Éviter les doublons
Dans certains cas, vous souhaiterez peut-être éviter les valeurs en double dans la carte fusionnée. Pour y parvenir, recherchez les doublons avant d'ajouter.
<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>
Exemple d'utilisation
<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>
Sortie :
map[id_1:[val_1 val_3] id_2:[val_2]]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!