이동: 패닉: 런타임 오류: 잘못된 메모리 주소 또는 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 서버에 액세스하지 않고 컴퓨터에서 실행되지만 적절한 오류 응답이 나타날 것으로 예상했습니다.
이 문제를 해결하는 데 도움을 주실 수 있나요?
답변 :
클라이언트.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()
위 내용은 당황하세요: '잘못된 메모리 주소 또는 Nil 포인터 역참조' 오류를 디버깅하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!