总结:
数据读取的几种方式
方式一:
b := make([]byte, clen) n, err := resp.Body.Read(b)
这里需要判断err是不是EOF
方式二:
1 bb := bytes.NewBuffer(nil) 2 n, err := io.Copy(bb, resp.Body)
这种方式无需判断EOF错误
io.Copy与io.CopyBuffer的区别
共同点:
io.Copy与io.CopyBuffer实际都是copyBuffer实现的,只不过io.Copy只有源src和目的dst两个参数;而io.CopyBuffer却多了一个参数buf。
用途:
io.Copy可以把数据从一个连接拷贝到另外一个连接
io.CopyBuffer既可以把数据从一个连接拷贝到另外一个连接,还可以将数据保存在一个buf中,而这个一份数据可以用作缓存(即一边接收,一边发送并且缓存)
原文:https://www.cnblogs.com/zcqkk/p/13561359.html