ホームページ > バックエンド開発 > Golang > Go Panic: 「無効なメモリ アドレスまたは Nil ポインタ参照解除」エラーをデバッグするには?

Go Panic: 「無効なメモリ アドレスまたは Nil ポインタ参照解除」エラーをデバッグするには?

Linda Hamilton
リリース: 2024-12-21 04:45:10
オリジナル
695 人が閲覧しました

Go Panic: How to Debug

Go: パニック: ランタイム エラー: 無効なメモリ アドレスまたは Nil ポインター逆参照

質問:

Go プログラムを実行すると、次のような問題が発生しますパニック:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x38 pc=0x26df]

goroutine 1 [running]:
main.getBody(0x1cdcd4, 0xf800000004, 0x1f2b44, 0x23, 0xf84005c800, ...)
        /Users/matt/Dropbox/code/go/scripts/cron/fido.go:65 +0x2bb
main.getToken(0xf84005c7e0, 0x10)
        /Users/matt/Dropbox/code/go/scripts/cron/fido.go:140 +0x156
main.main()
        /Users/matt/Dropbox/code/go/scripts/cron/fido.go:178 +0x61
ログイン後にコピー

エラーをキャッチしようとしましたが、原因を特定できません。このプログラムは、コードにリストされている API サーバーにアクセスできないマシン上で実行されますが、適切なエラー応答が返されると予想していました。

この問題の解決を手伝ってもらえますか?

回答:

パニックは、client.Do() メソッドで非 nil エラーをチェックする前に res.Body にアクセスすることが原因である可能性があります。 func (*Client) Do のドキュメントによると、クライアント ポリシーまたは HTTP プロトコル エラーが原因の場合はエラーが返されます。ただし、2xx 以外の応答はエラーを引き起こさず、resp.Body フィールドには nil 以外の値が含まれています。

問題を解決するには、client.Do() を呼び出した直後にエラーを確認してください。

res, err := client.Do(req)

if err != nil {
    return nil, err
}
defer res.Body.Close()
ログイン後にコピー

以上がGo Panic: 「無効なメモリ アドレスまたは Nil ポインタ参照解除」エラーをデバッグするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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