新手问题 关于 HTTP 返回的 resp 的数据读取问题

deepzz · 2017年09月27日 · 最后由 Ky 回复于 2017年09月27日 · 485 次阅读
resp, err := http.Get("http://example.com/")
if err != nil {
    return err
}
defer resp.Body.Close()

// 应该怎样读才最好
var (
    total = 1024*100
    data   = make([]byte, total)
    length = 0
)

for {
    n, err := resp.Body.Read(data[length:])
    if n > 0 {
        if length += n; length == total {
            break
        }
    }

    if err != nil {
        if err == io.EOF {
            err = nil
            break
        } else {
            break
        }
    }
}

需求是从 resp.Body 内读取小于 100k 的数据。

网络层数据的读取,有什么坑需要注意?各位大佬有没有相关文章或书籍推荐,如 TCP 窗口,网络收发包机制等。

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

io 包里有个 LimitReader 函数

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册