首页 > 编程语言 > 详细

Go语言HTTP客户端数据读取总结

时间:2020-08-25 19:37:19      阅读:115      评论:0      收藏:0      [点我收藏+]

总结:

  1. 当读取的字节小于数据长度时,Read一般不会返回错误,除非数据还未接收完发生了异常(例如连接中断,读取超时等)
  2. 当读取的字节大于等于数据长度时,Read会返回读取的字节和EOF(End Of File),表示数据已经读完了。 

 

 

数据读取的几种方式

方式一:

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中,而这个一份数据可以用作缓存(即一边接收,一边发送并且缓存)

 

Go语言HTTP客户端数据读取总结

原文:https://www.cnblogs.com/zcqkk/p/13561359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!