gzip のやり方

  • 0
    いいね
  • 2
    コメント

    普通に文字列 (string) から gzip を生成するやり方
    エラーハンドリングは省略

    import (
      "bytes"
      "compress/gzip"
    )
    
    func makeGzip(body string) []byte {
      var b bytes.Buffer
      gw := gzip.NewWriter(&b)
      _, err := gw.Write([]byte(body)); if err != nil {
        ...
      }
      gw.Flush()
      gw.Close()
      return b.Bytes()
    }
    

    gw.Close() はファイルストリームのクローズみたいな挙動ではなく,
    gzip のフッターデータ書き込みなので defer 等で最後に回そうとすると
    不正なデータになってしまうので注意. (とりあえず解凍はできない)
    Close() は Flush() の処理を含んでいるかもしれませんが自信がないです.