マッピング操作での「無効なメモリ アドレスまたは nil ポインター逆参照」エラーのデバッグ
マップ内の構造体フィールドにアクセスすると、 「無効なメモリ アドレスまたは nil ポインタ逆参照」エラー。この問題は通常、nil ポインターを逆参照しようとしたときに発生します。
提供される特定の例では:
condition := map[string]*guardduty.Condition{} condition["id"].Equals = strPtr
マップ条件は *guardduty.Condition 構造体へのポインターの空のマップとして初期化されます。 。その結果、初期化せずにcondition["id"] にアクセスすると nil 値が返され、Equals フィールドを設定するために逆参照することはできません。
この問題を解決するには、まずキーが存在するかどうかを確認します。
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 }
このチェックを実行すると、ポインタを逆参照して設定する前に、ポインタが nil ではないことを確認できます。フィールドに等しい。
以上がGoで構造体をマッピングする際の「無効なメモリアドレスまたはnilポインタ逆参照」エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。