Cartes imbriquées multiples dans Golang
Go permet la création de cartes imbriquées, qui peuvent être utiles pour organiser les données dans une structure hiérarchique. Cependant, il existe certains pièges potentiels à prendre en compte lorsque l'on travaille avec des cartes imbriquées.
Un problème à prendre en compte est que la valeur zéro d'une carte est nulle. Si vous tentez d'accéder à une clé inexistante dans une carte nulle, cela va paniquer. Cela peut se produire lorsque vous travaillez avec plusieurs cartes imbriquées, car les cartes internes peuvent ne pas être initialisées correctement.
Considérez l'exemple suivant :
func main() { var w = map[string]string{} var data = map[string]map[string]string{} w["w"] = "x" data["a"] = w data["b"] = w data["c"] = w fmt.Println(data) }
Ce code attribue la même référence de carte à plusieurs clés. dans la carte de données. Pendant la compilation, cela entraîne une panique à l'exécution car la carte data["a"] est toujours nulle et tenter de lui attribuer une valeur déclenchera une panique.
Pour éviter ce problème, vous devez initialiser le cartes intérieures avant de les utiliser. Cela peut être fait en utilisant la fonction make ou en initialisant avec un littéral composite.
Voici un exemple avec make :
func main() { var data = map[string]map[string]string{} data["a"] = make(map[string]string) data["b"] = make(map[string]string) data["c"] = make(map[string]string) fmt.Println(data) }
Et voici un exemple avec un littéral composite :
func main() { var data = map[string]map[string]string{ "a": map[string]string{}, "b": map[string]string{}, "c": map[string]string{}, } fmt.Println(data) }
Ces exemples initialisent les cartes internes avant de leur attribuer des valeurs, éliminant ainsi le temps d'exécution potentiel panique.
N'oubliez pas qu'il est essentiel de s'assurer que toutes les cartes imbriquées sont correctement initialisées avant de tenter d'y accéder ou de les modifier. En résolvant ces problèmes potentiels, vous pouvez utiliser efficacement des cartes imbriquées pour organiser vos données dans Go.
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!