gob编解码简介
gob是go语言内置的编解码包,可以支持变长类型的编解码(意味着通用)
与其他编解码做简单的比较:
-
json:可读
-
gob:高效,通用
-
binary.Write/Read:高效,简便,但是编解码的数据必须是定长的
-
proto:不可读,高效
示例
type Person struct {
Name string
Age uint64
}
func main() {
//编解码Person结构
lily := Person{
"Lily",
18,
}
//所有的参数都传递地址
var buffer bytes.Buffer
//编码
//1. 创建编码器
encoder := gob.NewEncoder(&buffer)
//2. 编码
err := encoder.Encode(&lily)
if err != nil {
fmt.Printf("encode err:", err)
return
}
data := buffer.Bytes()
fmt.Printf(" 编码后的数据: %x\n", data)
//传输.......
// p1 := Person{}
var p Person
//解码
//1. 创建解码器
decoder := gob.NewDecoder(bytes.NewReader(data))
//2. 解码
err = decoder.Decode(&p)
if err != nil {
fmt.Printf("decode err:", err)
return
}
fmt.Printf("解码数据: %v\n", p)
}