Maison > développement back-end > Golang > Comment puis-je éviter la panique lors de l'utilisation de plusieurs cartes imbriquées dans Go ?

Comment puis-je éviter la panique lors de l'utilisation de plusieurs cartes imbriquées dans Go ?

Susan Sarandon
Libérer: 2024-12-04 08:33:13
original
600 Les gens l'ont consulté

How Can I Avoid Panics When Using Multiple Nested Maps in Go?

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)
}
Copier après la connexion

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)
}
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal