1. 程式人生 > 其它 >go 常用標準庫 編碼

go 常用標準庫 編碼

go 常用標準庫 編碼

1.1 編碼

1.1.1 json && easyjson

json是go標準庫裡自帶的序列化工具,使用了反射,效率比較低。
easyjson只針對預先定義好的json結構體對輸入的json字串進行純字串的擷取,並將對應的json欄位賦值給結構體。
easyjson -all xxx.go 生成go檔案中定義的結構體對應的解析,xxx.go所在的package不能是main。

func easyjson.Marshal(v easyjson.Marshaler) ([]byte, error)
func easyjson.Unmarshal(data []byte, v easyjson.Unmarshaler) error

1.1.2 sonic

sonic是位元組跳動開源的json序列化工具包,號稱效能強過easyjson、jsoniter,使用起來非常方便。

import "github.com/bytedance/sonic"

// Marshal
output, err := sonic.Marshal(&data) 
// Unmarshal
err := sonic.Unmarshal(input, &data) 

1.1.3 base64

base64經常在http環境下用來傳輸較長的資訊。任意byte陣列都可以採用base64編碼轉為字串,並且可以反解回byte陣列。編碼和解碼的方法是公開、確定的, base64不屬於加密演算法。

func (*base64.Encoding).EncodeToString(src []byte) string
func (*base64.Encoding).DecodeString(s string) ([]byte, error)

1.1.4 compress包下實現了zlib、bzip、gip、lzw等壓縮演算法

writer := zlib.NewWriter(fout)//壓縮
writer.Write(bytes)
reader, err := zlib.NewReader(fin) //解壓
io.Copy(os.Stdout, reader)   //把reader流裡的內容拷貝給標準輸出流,即檔案解壓後的內容列印到控制檯