Maison > développement back-end > Golang > Comment puis-je utiliser en toute sécurité les cartes imbriquées dans Go et éviter les paniques d'exécution ?

Comment puis-je utiliser en toute sécurité les cartes imbriquées dans Go et éviter les paniques d'exécution ?

Linda Hamilton
Libérer: 2024-12-02 17:27:10
original
1059 Les gens l'ont consulté

How Can I Safely Use Nested Maps in Go and Avoid Runtime Panics?

Cartes imbriquées dans Go : pièges et solutions courants

Dans Go, la valeur zéro pour les cartes est nulle, ce qui signifie une carte non initialisée. Le stockage de valeurs dans une carte nulle entraîne une panique d'exécution. Cela peut être vu dans l'exemple suivant :

func main() {
    var data = map[string]map[string]string{}
    data["a"]["w"] = "x"
    println(data)
}
Copier après la connexion

Ce code paniquera au moment de l'exécution avec l'erreur "affectation à une entrée dans une carte nulle". Pour éviter ce problème, initialisez explicitement la carte avant de lui attribuer des valeurs, comme indiqué ci-dessous :

func main() {
    var data = map[string]map[string]string{}
    data["a"] = make(map[string]string)
    data["a"]["w"] = "x"
    println(data)
}
Copier après la connexion

Dans cet exemple, make(map[string]string) crée une nouvelle carte vide de type map[string ]string.

Une autre façon d'initialiser les cartes imbriquées consiste à utiliser des littéraux composites :

func main() {
    var data = map[string]map[string]string{
        "a": map[string]string{},
        "b": map[string]string{},
        "c": map[string]string{},
    }

    data["a"]["w"] = "x"
    println(data)
}
Copier après la connexion

Les deux méthodes initialiseront correctement les cartes imbriquées mapper et permettre le stockage des valeurs sans provoquer de panique à l'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!

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