Comprendre « Erreur d'exécution : affectation à une entrée dans une carte nulle »
Lorsque vous essayez d'utiliser la structure de données cartographiques intégrée de Go, vous pouvez rencontrez la redoutable « erreur d’exécution : affectation à l’entrée dans une carte nulle ». Cette erreur provient d'une tentative d'attribuer une valeur à une clé inexistante dans une map nulle (ou non initialisée).
Dans votre cas spécifique, vous essayez de générer un fichier YAML à partir d'une map, où chaque La clé représente un "uid" et chaque valeur est une carte contenant des informations sur un individu. Cependant, votre code rencontre l'erreur d'exécution.
Solution : initialisation de la carte interne
Le problème survient car votre carte interne ("uid") n'est pas initialisée avant vous. essayez d'attribuer des valeurs à ses clés (par exemple, "kasi", "remya" et "nandan"). Pour résoudre cela, ajoutez simplement la ligne suivante avant la boucle for :
m["uid"] = make(map[string]T)
Cette ligne initialise la carte interne et l'associe à la clé "uid" dans votre carte externe (m). Désormais, vous pouvez attribuer en toute sécurité des valeurs aux clés dans la carte interne :
m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
Code raffiné
Voici votre code avec le correctif en place :
package main 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)) m["uid"] = make(map[string]T) for _, name := range names { m["uid"][name] = T{cn: "Chaithra", street: "fkmp"} } fmt.Println(m) y, _ := yaml.Marshal(&m) fmt.Println(string(y)) }
Avec cette modification, vous ne rencontrerez plus l'"erreur d'exécution : affectation à l'entrée dans une carte nulle." Votre code générera avec succès un fichier YAML avec la structure souhaitée.
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!