Go : 常用库MsgPack的简介与实践

卞博简
2023-12-01


简介

官网: https://msgpack.org/
MessagePack是一种有效的二进制序列化格式。它使您可以在JSON等多种语言中交换数据。但是它更快,更小。小整数被编码为单个字节,典型的短字符串除了本身之外,仅需要一个额外的字节。msgpack会将数据打包成二进制的数据,它的数据格式与json类似,但是在存储时对数字、多字节字符、数组等都做了很多优化,减少了无用的字符,二进制格式,也保证不用字符化带来额外的存储空间的增加,所以在很大程度上减少来传输数据的大小。

特性:

  • 高效 msgpack 是用于encoding/json包的置换式替代品,最多可快5倍。
  • 可定制 使用自定义编码器和解码器自定义用户定义和 stdlib 类型的序列化。
  • 可扩展 通过使用 ext 为您的类型提供类型感知的编码来扩展MessagePack。

实践

import "github.com/vmihailenco/msgpack/v5"

type Item struct {
    Foo string
}

func main() {
    b, err := msgpack.Marshal(&Item{Foo: "bar"})
    if err != nil {
        panic(err)
    }

    var item Item
    err = msgpack.Unmarshal(b, &item)
    if err != nil {
        panic(err)
    }
    fmt.Println(item.Foo)
    // Output: bar
}

小结

 类似资料: