Go: 恐慌:运行时错误:无效的内存地址或 nil 指针取消引用
运行 Go 程序时,可能会由于以下原因发生恐慌无效的内存地址或零指针取消引用。此错误消息通常表示运行时问题,而不是特定的程序错误。
在这种情况下,提供的 Go 代码演示了 HTTP 客户端处理的潜在问题。
问题
代码使用 func (*Client) Do 方法发出 HTTP 请求。但是,在尝试访问响应正文之前,它无法检查客户端返回的错误。
解决方案
根据 func (*Client) 的文档这样做,即使收到非 2xx HTTP 状态代码,也不会导致错误。相反,仅当错误是由客户端策略或 HTTP 协议错误引起时才会返回。
但是,代码会在访问响应正文 (res.Body) 后检查错误。这可能会导致由于无效的内存地址或 nil 指针取消引用而引发错误。
要解决此问题,应修改代码以在访问响应正文之前检查错误,如下所示:
res, err := client.Do(req) if err != nil { return nil, err } defer res.Body.Close()
以上是Go HTTP 客户端:如何避免'恐慌:运行时错误:无效的内存地址或 nil 指针取消引用”?的详细内容。更多信息请关注PHP中文网其他相关文章!