Erreur d'accès à la carte : "adresse mémoire invalide ou déréférencement de pointeur nul"
Problème :
Lorsque vous tentez d'accéder à un champ de structure à partir d'une carte, une erreur se produit indiquant une adresse mémoire invalide ou un déréférencement de pointeur nul. Cette erreur survient spécifiquement sur la ligne où une tranche de pointeurs (*string) est affectée à un champ dans un guardduty.Condition struct.
Code :
condition := map[string]*guardduty.Condition{} condition["id"].Equals = strPtr
Erreur :
invalid memory address or nil pointer dereference gdreport/main.go:30 +0x1e6
Explication :
L'erreur vient du fait que la carte des conditions est initialement une carte vide de pointeurs. Lorsque vous accédez à la clé « id », vous essayez effectivement de récupérer une valeur nulle de *guardduty.Condition. Ceci explique l'erreur, car l'accès au champ Equals d'un pointeur nul n'est pas valide.
Solution :
Pour résoudre ce problème, vous devez d'abord vérifier si le "id " La clé existe dans la carte de conditions. Si ce n'est pas le cas, vous pouvez initialiser un nouveau guardduty.Condition et l'attribuer à la clé "id".
Code mis à jour :
if _, 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 vérifiant l'existence de la clé en premier, vous pouvez éviter de tenter d'accéder à un pointeur nul, en vous assurant que le code s'exécute comme prévu.
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!