proto
Protobuf
ProtoBuf是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。是谷歌的亲儿子
自定义数据结构:
1 | // 定义版本 |
对于前面的约束,
- required: 有且只能出现一次
- optional: 0次或1次
- repeated: 任意次,相当于定义了一个数组类型
! 注意后面的序号是必须且唯一的,相当于字段的唯一ID
再通过命令 protoc --go_out=. test.proto
则会在当前目录下生成 test.pb.go
文件。
map 类型
map<key_type, value_type> map_field = N;
注意map 前面不能用repeated修饰,且key_type不能是浮点数(精度舍入),enum等类型。
分割线——————————————————
定义枚举消息类型,来满足在某个字段可能为某些预定义值中的一个:
1 |
|
嵌套
可以在消息中引用其它消息定义类型,也可以在一个消息中嵌套定义一个消息(message-> message。
对于引用其它proto包里面的消息类型。只需 import "other.proto"
使用
- 最后我们可以通过proto提供的与结构体之间的序列化与反序列化(即
Marshal()/Unmarshal()
)方法来相互转换。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Legendary!