Copier une map dans Go

Jay Singh 23 aout 2022
Copier une map dans Go

Ce didacticiel montre comment copier une map dans Go.

Copier une map dans Go

Dans Go, une map est une collection de paires clé-valeur non ordonnées. Il est populaire car il permet des recherches rapides et des valeurs qui peuvent être récupérées, mises à jour ou supprimées à l’aide de clés.

Étant donné que les maps dans Go sont des types de référence, vous ne pouvez pas répliquer en profondeur le contenu d’une map en affectant une instance à une autre. Vous pouvez créer une nouvelle map vide, puis y ajouter les paires clé-valeur appropriées à l’aide d’une boucle for range.

En Go, c’est la solution la plus simple et la plus efficace à ce problème.

La map clonée est un clone profond dans cet exemple de sortie, et l’ajout de pièces supplémentaires n’affecte pas la map d’origine.

Exemple 1:

package main

import "fmt"

func main() {
    dark := map[string]int{
        "Jay":  1,
        "Adam": 2,
        "Eve":  3,
    }

    // copy a map
    darkch := make(map[string]int)
    for k, v := range dark {
        darkch[k] = v
    }
    darkch["Jonas"] = 4

    fmt.Println("Original")
    fmt.Println(dark)

    fmt.Println("Copied")
    fmt.Println(darkch)
}

Production:

Original
map[Adam:2 Eve:3 Jay:1]
Copied
map[Adam:2 Eve:3 Jay:1 Jonas:4]

Nous mappons le nom et le numéro de matricule sur la map d’origine dans cet exemple.

Exemple 2 :

package main

import (
    "fmt"
)

func main() {
    studs := map[string]int{
        "Jay":  1,
        "Adam": 2,
        "Eve":  3,
    }
    studs_tmp := make(map[string]int)
    for name, roll_no := range studs {
        studs_tmp[name] = roll_no
    }
    for name, roll_no := range studs_tmp {
        fmt.Println("Name: ", name, ", roll_no: ", roll_no)
    }
}

Production:

Name:  Jay , roll_no:  1
Name:  Adam , roll_no:  2
Name:  Eve , roll_no:  3

Article connexe - Go Map