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.