Maison >développement back-end >Golang >Comment résoudre l'erreur Golang « Erreur d'exécution : affectation à l'entrée dans la carte nulle » ?
Résolution de « Erreur d'exécution : affectation à une entrée dans une carte nulle » avec Golang Maps
Lorsque vous travaillez avec des cartes dans Go, il est important de vous assurer que les cartes sont correctement initialisées avant d'y accéder ou de leur attribuer des valeurs. Le message d'erreur « erreur d'exécution : affectation à l'entrée dans la carte nil » indique que vous essayez de modifier une paire clé-valeur dans une carte qui n'a pas été initialisée.
Analysons l'extrait de code mentionné dans la question :
import ( "fmt" "gopkg.in/yaml.v2" ) type T struct { cn string street string } func main() { names := []string{"kasi", "remya", "nandan"} m := make(map[string]map[string]T, len(names)) for _, name := range names { m["uid"][name] = T{cn: "Chaithra", street: "fkmp"} } fmt.Println(m) y, _ := yaml.Marshal(&m) fmt.Println(string(y)) }
Le problème avec le code réside dans la ligne suivante :
m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
Ici, vous essayez d'accéder et de modifier la valeur des clés spécifiées "uid" et "name" dans la carte "m". Cependant, vous n'avez pas initialisé la carte interne pour la clé « uid ». En conséquence, la carte « m » n’a qu’une seule clé, qui est une carte vide. Lorsque vous essayez d'accéder et de modifier la carte interne à "m"uid", le runtime rencontre une erreur de pointeur nul car la clé "uid" n'a pas été initialisée.
Pour résoudre ce problème, vous devez initialisez la carte interne de la clé "uid" avant de tenter d'y accéder et de la modifier. Vous pouvez le faire en ajoutant la ligne suivante avant la boucle :
m["uid"] = make(map[string]T)
Cette ligne initialise une carte interne pour la clé "uid" sans valeur, garantissant que vous pouvez y accéder et la modifier pendant la boucle.
Avec cette modification, votre code s'exécutera avec succès, générant le résultat attendu. N'oubliez pas qu'il est crucial d'initialiser les cartes avant de les utiliser pour éviter les erreurs d'exécution.
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!