Go を呼び出すと、次のように明示的にパニックが発生します。 message:
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 goroutine 2 [syscall]: created by runtime.main /usr/local/Cellar/go/1.0.3/src/pkg/runtime/proc.c:221 goroutine 3 [syscall]: syscall.Syscall6() /usr/local/Cellar/go/1.0.3/src/pkg/syscall/asm_darwin_amd64.s:38 +0x5 syscall.kevent(0x6, 0x0, 0x0, 0xf840085188, 0xa, ...) /usr/local/Cellar/go/1.0.3/src/pkg/syscall/zsyscall_darwin_amd64.go:199 +0x88 syscall.Kevent(0xf800000006, 0x0, 0x0, 0xf840085188, 0xa0000000a, ...) /usr/local/Cellar/go/1.0.3/src/pkg/syscall/syscall_bsd.go:546 +0xa4 net.(*pollster).WaitFD(0xf840085180, 0xf840059040, 0x0, 0x0, 0x0, ...) /usr/local/Cellar/go/1.0.3/src/pkg/net/fd_darwin.go:96 +0x185 net.(*pollServer).Run(0xf840059040, 0x0) /usr/local/Cellar/go/1.0.3/src/pkg/net/fd.go:236 +0xe4 created by net.newPollServer /usr/local/Cellar/go/1.0.3/src/pkg/net/newpollserver.go:35 +0x382
パニック: ランタイム エラー: 無効なメモリ アドレスまたは nil ポインタ逆参照は、リソースにメモリ アドレスがない場合に発生し、nil ポインタ逆参照と呼ばれます。これは通常、何も指さないポインターを使用しようとしたとき、または nil ポインターのフィールドにアクセスしようとしたときに発生します。
この問題をトラブルシューティングするには:
指定されたコードでは、メソッドを閉じようとしたときに getBody 関数でパニックが発生しました。解像度本体。 func (*Client) Do のドキュメントによると、エラーはクライアント ポリシーまたは HTTP プロトコル エラーが原因で発生した場合にのみ返され、成功した応答には常に非 nil の本文が含まれます。
提案される変更は次のとおりです。 :
res, err := client.Do(req) if err != nil { return nil, err } defer res.Body.Close()
res.Body を使用する前にエラーをチェックすることで、リクエスト中に発生した可能性のあるエラーを適切に処理し、エラーを回避できます。パニック。
以上がGo コードで「パニック: ランタイム エラー: 無効なメモリ アドレスまたは nil ポインター逆参照」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。