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