gpt4 book ai didi

Go gzip 没有输出预期的输出

转载 作者:IT王子 更新时间:2023-10-29 01:46:15 26 4
gpt4 key购买 nike

我正在尝试使用 Gzip 压缩字符串并将其解压缩,但它并没有像我预期的那样工作。

我的代码如下,我压缩“hello World”然后读取/解压缩它

  s := []byte("hello world")

var b bytes.Buffer
gz := gzip.NewWriter(&b)
defer gz.Close()
_, err = gz.Write(s)
if err != nil {
panic(err)
}

r, err := gzip.NewReader(&b)
defer r.Close()
if err != nil {
panic(err)
}

l, _ := r.Read(s)

log.Println(l)

我希望它返回“hello world”,但它返回 0..

如果我删除 l, _ := r.Read(s) 并将最后一行替换为 log.Println(r) 我会得到这个很有道理

&{{ [] 2042-07-14 02:04:00 +0100 CET  255} 0x1847b780 0x185aa000 0x18400db8 0 0 [31 139 8 0 0 9 110 136 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] <nil>}

有人可以解释我错在哪里吗?

我想要的只是压缩一个字符串,稍后返回它的解压结果。

最佳答案

完成写入输出。例如,

package main

import (
"bytes"
"compress/gzip"
"log"
)

func main() {
var b bytes.Buffer

w := gzip.NewWriter(&b)
s := []byte("hello world")
_, err := w.Write(s)
if err != nil {
panic(err)
}
err = w.Flush()
if err != nil {
panic(err)
}
err = w.Close()
if err != nil {
panic(err)
}

r, err := gzip.NewReader(&b)
if err != nil {
panic(err)
}
defer r.Close()
t := make([]byte, len(s))
l, err := r.Read(t)
if err != nil {
panic(err)
}

log.Println(l, string(t))
}

输出:

2009/11/10 23:00:00 11 hello world

关于Go gzip 没有输出预期的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24097045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com