2016-04-18 153 views
2

我有以下功能,以壓縮的字節數組:golang:字節數組的gzip的或zlib壓縮零星掛起

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,都沒關係。

我使用去1.6在Linux x86_64的

+2

你真的應該養成檢查錯誤的習慣。你確定你的代碼是否掛起,而不僅僅是你的終端沒有刷新? – icza

+0

@icza:我在每行後面添加了一個打印語句來檢查。有時它只會在'compr:= gzip.NewWriter(&buf)'後立即打印語句。終端不掛;光標會急切地閃爍,直到我按下Enter鍵,恰好被輸入下一個需要用戶輸入的函數。在這種特殊情況下是否有其他方法來檢查錯誤? – Manuel

+0

你能否提供一個[MCVE](http://stackoverflow.com/help/mcve)仍然會產生你的問題? – icza

回答

2

這不是代碼的或golang的錯。看來,我使用的終端仿真器(終結者)沒有正確刷新。使用不同的終端模擬器我無法重現錯誤。