【问题标题】:golang: gzip or zlib compression of byte array sporadically hangsgolang:字节数组的gzip或zlib压缩偶尔挂起
【发布时间】:2016-04-18 13:30:28
【问题描述】:

我有以下函数来压缩字节数组:

func compress(input []byte) []byte {
        var buf bytes.Buffer
        compr := gzip.NewWriter(&buf)
        compr.Write(input) // here it appears to hang until
                           // Enter is pressed
        compr.Close()
        output := buf.Bytes()

        return output
}

函数偶尔会挂起。当我按 [Enter] 时,该功能将继续并返回预期结果。我在这里遗漏了什么吗?

即使给出相同的输入,它也会挂起大约五次。我用gzip还是zlib都没有关系。

我在 Linux x86_64 上使用 go 1.6

【问题讨论】:

  • 你真的应该养成检查错误的习惯。您确定您的代码挂起,而不仅仅是您的终端没有刷新吗?
  • @icza:我在每一行之后添加了一个打印语句来检查。有时它只会打印紧跟在compr := gzip.NewWriter(&buf) 之后的语句。终端未挂起;光标会急切地闪烁,直到我按下 Enter 键,这恰好被输入下一个需要用户输入的函数。在这种特殊情况下,还有其他方法可以检查错误吗?
  • 您能否提供一个MCVE 仍然会产生您的问题?
  • @icza:不需要。你为我指明了正确的方向。使用不同的终端仿真器(konsole),我无法重现该错误。错误的终端是终结者。你的第一个猜测恰好是正确的。 - 谢谢

标签: arrays go gzip zlib


【解决方案1】:

这不是代码或 golang 的错。我使用的终端模拟器(终结器)似乎没有正确刷新。使用不同的终端仿真器我无法重现该错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    相关资源
    最近更新 更多