有没有更好的方法将解压缩的数据读入切片?

时间:2015-08-27 23:13:16

标签: go

我正在从这样的http请求中读取gzip数据:

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

然后保守地为解压缩的数据分配一个切片。

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

最后在阅读

后修剪切片
_, err = gzr.Read(ubs)
ubs = bytes.TrimRightFunc(ubs, sliceFunc)

有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

对于初学者,.Read返回读取的字节数,因此您可以执行以下操作:

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

此外,您可以使用bytes.Buffer池并执行以下操作:

buf := getBufferFromPool()
io.Copy(buf, gzr)