gzip-compress in-memory in Go
In Go, you can use the built-in gzip
library together with bytes.Buffer
to compress a []byte
to obtain a []byte
containing gzip-compressed data:
content := "Hello World!"
buf := &bytes.Buffer{}
gzWriter := gzip.NewWriter(buf)
gzWriter.Write([]byte(content))
gzWriter.Close()
This full example compresses the data in-memory and writes it to a file called text.txt.gz afterwards. Note that you can also gzip directly into a file and if you don’t need to do anything else with the compressed data, you might as well have a look at our previous post How to write to gzipped file in Go.
package main
import (
"compress/gzip"
"os"
)
func main() {
content := "Hello World!"
// Initialize gzip
buf := &bytes.Buffer{}
gzWriter := gzip.NewWriter(buf)
gzWriter.Write([]byte(content))
gzWriter.Close()
// Convert buffer to
ioutil.WriteFile("test.txt.gz", buf.Bytes(), 0644)
}
You can use zcat test.txt.gz
to see that the content has been written to the file correctly.