Maison >développement back-end >Golang >Comment résoudre les erreurs « adresse mémoire invalide ou déréférencement de pointeur nul » lors du mappage de structures dans Go ?

Comment résoudre les erreurs « adresse mémoire invalide ou déréférencement de pointeur nul » lors du mappage de structures dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 09:56:12834parcourir

How to Resolve

Erreur de débogage "adresse mémoire invalide ou déréférencement de pointeur nul" dans les opérations de mappage

Lors de l'accès aux champs de structure dans une carte, on peut rencontrer le Erreur "adresse mémoire invalide ou déréférencement de pointeur nul". Ce problème survient généralement lors d'une tentative de déréférencement d'un pointeur nul.

Dans l'exemple spécifique fourni :

condition := map[string]*guardduty.Condition{}
condition["id"].Equals = strPtr

La condition de carte est initialisée comme une carte vide de pointeurs vers les structures *guardduty.Condition . Par conséquent, accéder à condition["id"] sans l'initialiser au préalable renverra une valeur nulle, qui ne peut pas être déréférencée pour définir le champ Equals.

Pour résoudre ce problème, vous pouvez d'abord vérifier si la clé existe dans la carte en utilisant l'approche suivante :

if cond, ok := condition["id"]; !ok { // <nil> false
    log.Println("Pointer is null")
} else {
    // Init new guardduty.Condition
    // and assign to required key
    nc := &guardduty.Condition{Equals: strPtr}
    condition["id"] = nc
}

En effectuant cette vérification, vous pouvez vous assurer que le pointeur n'est pas nul avant de tenter de le déréférencer et de définir l'égalité champ.

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