doupapin172773 2015-08-27 23:13
浏览 28
已采纳

是否有更好的方法将解压缩的数据读取为片?

I'm reading gzip data from a http request like this:

gzr, err := gzip.NewReader(resp.Body)
handle(err)

And then conservatively allocating a slice for the unzipped data.

cl := resp.Header.Get("Content-Length")
icl, err := strconv.Atoi(cl)
handle(err)
ubs := make([]byte, icl*3)

And finally trimming the slice after reading

_, err = gzr.Read(ubs)
ubs = bytes.TrimRightFunc(ubs, sliceFunc)

Is there a better way to do this ?

  • 写回答

1条回答 默认 最新

  • douzhuang2016 2015-08-27 23:18
    关注

    For starters, .Read returns the numbers of bytes read, so you can do something like:

    n, err = gzr.Read(ubs)
    ubs = ubs[:n]
    

    Also you can use a bytes.Buffer pool and do something like:

    buf := getBufferFromPool()
    io.Copy(buf, gzr)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题