假設(shè)下面的代碼,我正在從http獲取請(qǐng)求響應(yīng)中讀取,Read方法如何在內(nèi)部工作?它是在內(nèi)部一次性獲取數(shù)據(jù),然后根據(jù) buf 大小進(jìn)行寫入,并在下一次迭代中使用具有相同數(shù)據(jù)并更新游標(biāo),還是獲取數(shù)據(jù)直到 buf 已滿,然后在下一次迭代中再次獲取數(shù)據(jù)?var resp *http.Responsebuf := make([]byte, 50)for { r, err := resp.Body.Read(buf) if err == io.EOF { break }}
1 回答

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
根據(jù)閱讀器界面文檔:
讀取將最多 len(p) 字節(jié)讀取到 p 中。它返回讀取的字節(jié)數(shù) (0 < = n <= len(p))和遇到的任何錯(cuò)誤。即使 Read 返回 n < len(p),它也可以在調(diào)用期間將所有 p 用作暫存空間。如果某些數(shù)據(jù)可用,但不是 len(p) 字節(jié),則 Read 通常會(huì)返回可用的數(shù)據(jù),而不是等待更多數(shù)據(jù)。
響應(yīng)文檔從以下角度進(jìn)行了一些詳細(xì)介紹:Body
在讀取“正文”字段時(shí),將按需流式傳輸響應(yīng)正文。如果網(wǎng)絡(luò)連接失敗或服務(wù)器終止響應(yīng),Body.Read 調(diào)用將返回錯(cuò)誤。
- 1 回答
- 0 關(guān)注
- 107 瀏覽
添加回答
舉報(bào)
0/150
提交
取消