Golang使用zlib压缩和解压缩字符串
程序员文章站
2022-06-24 09:20:29
在python的时候就习惯使用zlib进行网页压缩。 golang下同样使用zlib进行压缩解压缩。 zlib官方给出的方法很简单,这里权当一个补充.
zli...
在python的时候就习惯使用zlib进行网页压缩。 golang下同样使用zlib进行压缩解压缩。 zlib官方给出的方法很简单,这里权当一个补充.
zlib.newwriter() 只能传递 []byte类型数据. newwriterlevel 可以传递压缩的等级.
package main import ( "bytes" "compress/zlib" "fmt" "io" ) func main() { var in bytes.buffer b := []byte(`xiorui.cc`) w := zlib.newwriter(&in) w.write(b) w.close() var out bytes.buffer r, _ := zlib.newreader(&in) io.copy(&out, r) fmt.println(out.string()) }
库包地址
import "compress/zlib"
写入
func newwriter func newwriter(w io.writer) *writer
读取压缩的数据
func newreader func newreader(r io.reader) (io.readcloser, error)
设置压缩等级,并压缩数据
func newwriterlevel(w io.writer, level int) (io.writecloser, os.error)
下面是几个级别.
const ( nocompression = 0 bestspeed = 1 bestcompression = 9 defaultcompression = -1 ) const ( nocompression = flate.nocompression bestspeed = flate.bestspeed bestcompression = flate.bestcompression defaultcompression = flate.defaultcompression )
写入数据
func (*writer) write func (z *writer) write(p []byte) (n int, err error)
关闭
func (*writer) close func (z *writer) close() error
golang zlib压缩的效率和性能都还可以, 毕竟rsync也在用这个压缩算法。 其实zlib和gzip对比,貌似用gzip的多一点。 比如nginx的gzip压缩. 以前看过国外一个帖子,是说zlib比gzip更适合那种速度跟压缩效果均衡的场景。