Go 戈朗';s zlib没有压缩

Go 戈朗';s zlib没有压缩,go,compression,zlib,Go,Compression,Zlib,我有下面一段代码,它接受一个十六进制字符串并将其转换为字节数组;但是,当我尝试使用zlib压缩提到的字节数组时,它不起作用(我在压缩之前和之后打印数据,但有相同的结果): 我还试图在关闭writer之前手动刷新它,但没有起到任何作用。最后一行似乎打印了错误的变量。它应该是fmt.Println(writer.Bytes())压缩数据将写入writer缓冲区。原始的数据切片不会被修改,您可以在前后打印它。为什么会改变?Printwriter.Bytes()@icza哦,我明白了……这是一个愚蠢的错

我有下面一段代码,它接受一个十六进制字符串并将其转换为字节数组;但是,当我尝试使用zlib压缩提到的字节数组时,它不起作用(我在压缩之前和之后打印数据,但有相同的结果):


我还试图在关闭writer之前手动刷新它,但没有起到任何作用。

最后一行似乎打印了错误的变量。它应该是
fmt.Println(writer.Bytes())

压缩数据将写入
writer
缓冲区。原始的
数据
切片不会被修改,您可以在前后打印它。为什么会改变?Print
writer.Bytes()
@icza哦,我明白了……这是一个愚蠢的错误,起初我把
gz
误认为writer,其余的都是混乱和错误的恶性循环XD……谢谢你的帮助……如果你愿意,你可以添加你的评论作为答案,我会接受的,因为你回答得更快
        data, err := hex.DecodeString(request.Log)
        if err != nil {
            panic(err)
        }
        fmt.Println(data)
        var writer bytes.Buffer
        gz := zlib.NewWriter(&writer)
        if _, err = gz.Write(data); err != nil {
            println("error: ", err)
            return
        }

        gz.Flush()
        if err = gz.Close(); err != nil {
            println("err", err)
            return
        }

        fmt.Println(data)