"Map[string]*Type "Invalid Memory Address or Nil Pointer Dereference"
構造体のフィールドにアクセスすると、エラー「無効なメモリ アドレスまたは nil ポインタ逆参照」。これは通常、構造体へのポインタが初期化されていないか、ポイントされていないことを示します。
あなたの場合、条件マップにフィールドを設定しようとしていますが、条件マップはポインターの空のマップであるため、* の nil 値を取得します。条件からのguardduty.Condition.
Goの「Maps in Action」によると、2つの値を使用してキーの存在をテストできます。 assign:
i, ok := m["route"]
この割り当てでは、「route」キーに格納されている値が i に割り当てられます。キーが存在しない場合、i には値タイプの 0 の値 (0) が割り当てられます。 、ok、は、マップ内にキーが存在するかどうかを示すブール値です。
問題を解決するには、コードを次のように変更します。
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 }
以上がGo でマップ要素にアクセスするときに「無効なメモリ アドレスまたは Nil ポインター参照解除」エラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。