Maison >développement back-end >Golang >Comment fusionner des cartes dans Golang et gérer les valeurs en double ?

Comment fusionner des cartes dans Golang et gérer les valeurs en double ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 07:10:03983parcourir

How to Merge Maps in Golang and Handle Duplicate Values?

Fusionner des cartes dans Golang

Fusionner des cartes

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.

Fonction de fusion personnalisée

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>

Éviter les doublons

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>

Exemple d'utilisation

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn