Http 如果我不需要响应,是否需要resp.Body.Close()?

Http 如果我不需要响应,是否需要resp.Body.Close()?,http,go,Http,Go,我提出了一个我不需要回复的请求。如果我这样做会不会有什么问题 client = &http.Client{ Timeout: time.Duration(15 * time.Second), } ... ... _, err := client.Do(req) 引自 如果返回的错误为nil,则响应将包含一个非nil的主体,用户希望该主体关闭。如果正文未同时读取到EOF并关闭,则客户端的底层往返传输程序通常无法重新使用到服务器的持久TCP连接来执行后续的保持活动请求 所以是的,如

我提出了一个我不需要回复的请求。如果我这样做会不会有什么问题

client = &http.Client{
    Timeout: time.Duration(15 * time.Second),
}
...
...
_, err := client.Do(req)
引自

如果返回的错误为nil,则响应将包含一个非nil的主体,用户希望该主体关闭。如果正文未同时读取到EOF并关闭,则客户端的底层往返传输程序通常无法重新使用到服务器的持久TCP连接来执行后续的保持活动请求

所以是的,如果没有错误,您总是必须关闭它。在结束之前,您还需要向EOF读取正文。引述自:

如果你不需要尸体,你可以这样丢弃它:

resp, err := client.Do(req)
if err != nil {
    // handle error and return
    return
}
defer resp.Close()
io.Copy(ioutil.Discard, resp.Body)

如果出现错误,请参阅相关问题:

请参阅net/http.Client.Do文档中的常见问题和说明。
resp, err := client.Do(req)
if err != nil {
    // handle error and return
    return
}
defer resp.Close()
io.Copy(ioutil.Discard, resp.Body)