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

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

Susan Sarandon
リリース: 2024-12-05 21:11:12
オリジナル
1071 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート