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
Libérer: 2024-10-29 07:10:03
original
984 Les gens l'ont consulté

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>
Copier après la connexion

É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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Sortie :

map[id_1:[val_1 val_3] id_2:[val_2]]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal