github.com/sandwich-go/boost@v1.3.29/xcompress/compress.go (about) 1 package xcompress 2 3 type compress struct { 4 opts *Options 5 Compressor 6 } 7 8 // New 初始化 Compressor 9 // 使用 GZIP 方式时,解压缩等级才有效,其他模式该参数无效 10 // 默认方式,或者使用非 GZIP / Snappy 方式,均为 Dummy 方式 11 func New(opts ...Option) (Compressor, error) { 12 var err error 13 c := &compress{opts: NewOptions(opts...)} 14 switch c.opts.GetType() { 15 case GZIP: 16 c.Compressor, err = newGzipCompressor(c.opts.GetLevel()) 17 case Snappy: 18 c.Compressor, err = newSnappyCompressor() 19 default: 20 c.Compressor, err = newDummyCompressor() 21 } 22 if err != nil { 23 return nil, err 24 } 25 return c, nil 26 } 27 28 // MustNew 初始化 Compressor,否则 panic 29 // 当使用 GZIP 方式时,必须传入正确的解压缩等级 30 func MustNew(opts ...Option) Compressor { 31 c, err := New(opts...) 32 if err != nil { 33 panic(err) 34 } 35 return c 36 }