ホームページ >バックエンド開発 >Golang >Go でマップ要素にアクセスするときに「無効なメモリ アドレスまたは Nil ポインター参照解除」エラーを処理する方法は?

Go でマップ要素にアクセスするときに「無効なメモリ アドレスまたは Nil ポインター参照解除」エラーを処理する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 21:11:121107ブラウズ

How to Handle

"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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。