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!