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
Linda Hamiltonoriginal
2024-12-02 17:27:10980parcourir

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)
}

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)
}

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)
}

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:
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