Maison >développement back-end >Golang >Comment gérer les erreurs « Adresse mémoire invalide ou déréférencement de pointeur nul » lors de l'accès aux éléments de la carte dans Go ?

Comment gérer les erreurs « Adresse mémoire invalide ou déréférencement de pointeur nul » lors de l'accès aux éléments de la carte dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 21:11:121071parcourir

How to Handle

"Map[string]*Type "Adresse mémoire invalide ou déréférencement de pointeur nul"

Lors de l'accès aux champs d'une structure, vous pouvez rencontrer le erreur "adresse mémoire invalide ou déréférencement de pointeur nul." Cela indique généralement que le pointeur vers la structure n'est pas initialisé ou pointe vers une mémoire invalide. adresse.

Dans votre cas, vous essayez de définir un champ dans une carte de conditions. Cependant, comme la carte de conditions est une carte vide de pointeurs, vous récupérez une valeur nulle pour *guardduty.Condition de. condition.

Selon "Maps in Action" pour Go, vous pouvez tester la présence d'une clé à l'aide d'une affectation à deux valeurs :

i, ok := m["route"]

Dans cette affectation, i reçoit la valeur stockée sous la clé « route ». Si la clé n'existe pas, i se voit attribuer la valeur zéro du type de valeur (0). La deuxième valeur, ok, est un booléen qui indique si la clé existe. dans la carte.

Pour résoudre le problème, modifiez votre code comme suit :

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

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