gob编解码简介

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)
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值