Maison >développement back-end >Golang >Comment fusionner des cartes dans Golang et gérer les valeurs en double ?
La fusion de plusieurs cartes avec le même type de clé en une seule carte nécessite la fusion de leurs valeurs pour faire correspondre les clés. Dans Golang, les valeurs de carte peuvent être de n'importe quel type, y compris les tranches.
Une approche simple pour fusionner des cartes consiste à créer une fonction qui parcourt les cartes d'entrée et ajoute des valeurs à un slice pour les clés correspondantes dans la carte des 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>
Si les valeurs en double pour la même clé doivent être évitées, la fonction de fusion peut être étendue avec une vérification 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 { for _, v2 := range res[k] { if v == v2 { continue srcMap } } res[k] = append(res[k], v) } } return res }</code>
Considérez les cartes suivantes :
<code class="go">m1 := map[string]string{"id_1": "val_1"} m2 := map[string]string{"id_2": "val_2"} m3 := map[string]string{"id_1": "val_3"}</code>
L'utilisation de la fonction de fusion pour les fusionner produit la carte de résultat suivante :
<code class="go">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!