![d092a7c24f7317c30db496bca82cc813.png](https://img-blog.csdnimg.cn/img_convert/d092a7c24f7317c30db496bca82cc813.png)
本文主要介绍二进制协议gob及msgpack的基本使用。
最近在写一个gin框架的session服务时遇到了一个问题,Go语言中的json包在序列化空接口存放的数字类型(整型、浮点型等)都序列化成float64类型。
我们构造一个结构体如下:
type s struct {data map[string]interface{}}
json序列化的问题
![de6ed492c400441db33d7053c140710c.png](https://img-blog.csdnimg.cn/img_convert/de6ed492c400441db33d7053c140710c.png)
输出结果:
"{"count":1}"{map[count:1]}value:1, type:float64
gob序列化示例
标准库gob是golang提供的“私有”的编解码方式,它的效率会比json,xml等更高,特别适合在Go语言程序间传递数据。
![f294d88883993ac1df5271333a5c47bd.png](https://img-blog.csdnimg.cn/img_convert/f294d88883993ac1df5271333a5c47bd.png)
msgpack
MessagePack是一种高效的二进制序列化格式。它允许你在多种语言(如JSON)之间交换数据。但它更快更小。
安装
go get -u github.com/vmihailenco/msgpack
示例
![c7dc2b380b892714e67909124053eb36.png](https://img-blog.csdnimg.cn/img_convert/c7dc2b380b892714e67909124053eb36.png)
原文链接:https://www.liwenzhou.com/posts/Go/gob_msgpack/
本文作者:李文周,原创授权发布