Golang - 检查错误并推迟操作的正确顺序是什么?

时间:2016-09-02 08:07:35

标签: http go

我是Go的新手。如果我正在执行HTTP get请求,请执行以下操作:

resp, err := http.Get("https://www.google.com")

现在我需要检查err是否为零defer resp.Body.Close()。这两项操作的正确顺序是什么?

1 个答案:

答案 0 :(得分:2)

您需要在致电Get后立即检查错误。如果Get失败,resp将设置为nil。这意味着resp.Body会生成运行时nil pointer dereferenced错误。

resp, err := http.Get("https://www.google.com")
if err != nil {
    // process error
    return err
}
defer resp.Body.Close()