Golang的gzip.Reader有问题

Golang的gzip.Reader有问题,go,Go,为什么这样不行?(抱歉,由于某些原因,我无法在Go游乐场上获得共享按钮) 我得到的输出 data = 01 02 03 04 05 06 07 byte buffer bb0 contains = 01 02 03 04 05 06 07 7 bytes written using gzip writer, err = <nil> byte buffer bb1 contains = 1f 8b 08 00 00 09 6e 88 00 ff 0 bytes copied from

为什么这样不行?(抱歉,由于某些原因,我无法在Go游乐场上获得共享按钮)

我得到的输出

data = 01 02 03 04 05 06 07
byte buffer bb0 contains = 01 02 03 04 05 06 07
7 bytes written using gzip writer, err = <nil>
byte buffer bb1 contains = 1f 8b 08 00 00 09 6e 88 00 ff
0 bytes copied from gzip reader, err = unexpected EOF
byte buffer bb2 contains = 
data=01 02 03 04 05 06 07
字节缓冲区bb0包含=01 02 03 04 05 06 07
使用gzip编写器写入7个字节,错误=
字节缓冲区bb1包含=1f 8b 08 00 00 09 6e 88 00 ff
从gzip读取器复制了0个字节,错误=意外的EOF
字节缓冲区bb2包含=

读卡器似乎没有做任何事情,我做错了什么?

可能它不起作用,因为您没有关闭gzip编写器,因此gzip数据从未刷新到底层编写器(您使用的是bytes.Buffer),或者至少它没有完成

您需要
w.Close()
gzip编写器

或者,可能是在尝试读取bytes.Buffer之前,需要将其查找为零,因为读取器可能正在尝试从其末尾读取


此外,您所做的工作效率很低,我建议您使用:

在关闭或刷新写入程序之前,压缩不会完成。你两个都没有。我很想看看你的缓冲区库和标准库之间的性能比较。谢谢分享。这非常令人困惑,因为
$gzip
二进制代码在没有
.Close()
的情况下对文件进行了解码,但Golang reader却没有它。我猜关闭操作会添加某种页脚:
data = 01 02 03 04 05 06 07
byte buffer bb0 contains = 01 02 03 04 05 06 07
7 bytes written using gzip writer, err = <nil>
byte buffer bb1 contains = 1f 8b 08 00 00 09 6e 88 00 ff
0 bytes copied from gzip reader, err = unexpected EOF
byte buffer bb2 contains =