知道為什么我無法關(guān)閉請求正文嗎?請求正在返回200并且沒有錯誤,但req.Body.Close()拋出運行時錯誤:無效的內(nèi)存地址或 nil 指針取消引用clientHttp := &http.Client{}req, err := http.NewRequest("GET", "https://example.com/item/"+strconv.FormatInt(itemID, 10), nil) if err != nil { logrus.Error(err) return models.Company{}, err }resp, err := clientHttp.Do(req) if err != nil { logrus.Error(err) return models.Company{}, err }defer req.Body.Close() // <- panic!
2 回答

一只萌萌小番薯
TA貢獻1795條經(jīng)驗 獲得超7個贊
應(yīng)用程序應(yīng)該關(guān)閉響應(yīng)正文,而不是請求正文:
defer?resp.Body.Close()
該req.Body
字段從最后一個參數(shù)設(shè)置為http.NewRequest
。該req.Body
字段為零,因為最后一個參數(shù)http.NewRequest
為零。
根據(jù)Request.Body的文檔,傳輸關(guān)閉請求正文(如果它不為零)?:
對于客戶端請求,nil body 意味著該請求沒有 body,例如 GET 請求。HTTP 客戶端的 Transport 負責調(diào)用 Close 方法。

紅顏莎娜
TA貢獻1842條經(jīng)驗 獲得超13個贊
req
是一個 GET 請求。它沒有身體,所以req.Body
為零。這就是為什么你會得到一個零指針取消引用。不要關(guān)閉req.Body
。
- 2 回答
- 0 關(guān)注
- 176 瀏覽
添加回答
舉報
0/150
提交
取消