Maison >développement back-end >Golang >Comment résoudre l'erreur Golang « Erreur d'exécution : affectation à l'entrée dans la carte nulle » ?

Comment résoudre l'erreur Golang « Erreur d'exécution : affectation à l'entrée dans la carte nulle » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 20:10:15516parcourir

How to Resolve the Golang

Résolution de « Erreur d'exécution : affectation à une entrée dans une carte nulle » avec Golang Maps

Lorsque vous travaillez avec des cartes dans Go, il est important de vous assurer que les cartes sont correctement initialisées avant d'y accéder ou de leur attribuer des valeurs. Le message d'erreur « erreur d'exécution : affectation à l'entrée dans la carte nil » indique que vous essayez de modifier une paire clé-valeur dans une carte qui n'a pas été initialisée.

Analysons l'extrait de code mentionné dans la question :

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))
    for _, name := range names {
        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
    }
    fmt.Println(m)

    y, _ := yaml.Marshal(&m)

    fmt.Println(string(y))
}

Le problème avec le code réside dans la ligne suivante :

m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}

Ici, vous essayez d'accéder et de modifier la valeur des clés spécifiées "uid" et "name" dans la carte "m". Cependant, vous n'avez pas initialisé la carte interne pour la clé « uid ». En conséquence, la carte « m » n’a qu’une seule clé, qui est une carte vide. Lorsque vous essayez d'accéder et de modifier la carte interne à "m"uid", le runtime rencontre une erreur de pointeur nul car la clé "uid" n'a pas été initialisée.

Pour résoudre ce problème, vous devez initialisez la carte interne de la clé "uid" avant de tenter d'y accéder et de la modifier. Vous pouvez le faire en ajoutant la ligne suivante avant la boucle :

m["uid"] = make(map[string]T)

Cette ligne initialise une carte interne pour la clé "uid" sans valeur, garantissant que vous pouvez y accéder et la modifier pendant la boucle.

Avec cette modification, votre code s'exécutera avec succès, générant le résultat attendu. N'oubliez pas qu'il est crucial d'initialiser les cartes avant de les utiliser pour éviter les erreurs d'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