ホームページ >バックエンド開発 >Golang >Goで構造体をマッピングする際の「無効なメモリアドレスまたはnilポインタ逆参照」エラーを解決する方法は?

Goで構造体をマッピングする際の「無効なメモリアドレスまたはnilポインタ逆参照」エラーを解決する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 09:56:12834ブラウズ

How to Resolve

マッピング操作での「無効なメモリ アドレスまたは 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 サイトの他の関連記事を参照してください。

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