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
Libérer: 2024-12-13 20:10:15
original
514 Les gens l'ont consulté

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

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

m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
Copier après la connexion

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

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!

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