Golang USES zlib to compress and uncompress strings

  • 2020-06-07 04:37:04
  • OfStack

zlib has been used to compress web pages since python. zlib is also used for compression and decompression under golang. The official method of zlib is simple and should be added here.

zlib.NewWriter() can only pass []byte type data. NewWriterLevel can pass compression levels.

package main
import (
func main() {
 var in bytes.Buffer
 b := []byte(`xiorui.cc`)
 w := zlib.NewWriter(&in)
 var out bytes.Buffer
 r, _ := zlib.NewReader(&in)
 io.Copy(&out, r)

Library package address

import "compress/zlib"


func NewWriter
  func NewWriter(w io.Writer) *Writer

Read compressed data

func NewReader
  func NewReader(r io.Reader) (io.ReadCloser, error)

Set the compression level and compress the data

func NewWriterLevel(w io.Writer, level int) (io.WriteCloser, os.Error)

Here are the levels.

const (
    NoCompression = 0
    BestSpeed   = 1
    BestCompression  = 9
    DefaultCompression = -1
const (
  NoCompression   = flate.NoCompression
  BestSpeed     = flate.BestSpeed
  BestCompression  = flate.BestCompression
  DefaultCompression = flate.DefaultCompression

Write data

func (*Writer) Write
  func (z *Writer) Write(p []byte) (n int, err error)

Shut down

func (*Writer) Close
  func (z *Writer) Close() error

The efficiency and performance of Golang zlib compression is ok, after all, rsync is also using this compression algorithm. In fact, zlib is one more point than gzip. For example, nginx's gzip compression. I have seen a foreign post before, it is said that zlib is more suitable than gzip for the scene of the balance of speed and compression effect.

Related articles: