Protocol Buffers
,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。本文只介绍 syntax = proto3
的协议语法。
.proto | 注释 | C++ | Python | Go | C# |
---|---|---|---|---|---|
double | 定长编码 | double | float | float64 | double |
float | 定长编码 | float | float | float32 | float |
int32 | 变长编码,负数编码效率低,可使用sint32 |
int32 | int | int32 | int |
int64 | 变长编码,负数编码效率低,可使用sint64 |
int64 | int/long | int64 | long |
uint32 | 变长编码 | uint32 | int/long | uint32 | uint |
uint64 | 变长编码 | uint64 | int/long | unit64 | ulong |
sint32 | 变长编码,对负数编码比int32 更有效率 |
int32 | int | int32 | int |
sint64 | 变长编码,对负数编码比int64 更有效率 |
int64 | int/long | int64 | long |
fixed32 | 总是4 字节,如果值大于2^28 比uint32 更有效率 |
uint32 | int/long | uint64 | ulong |
fixed64 | 总是8 字节,如果值大于2^56 比uint64 更有效率 |
uint64 | int/long | uint64 | ulong |
bool | 1或0的变长编码 | bool | boolean | bool | bool |
string | 必须是UTF-8 编码 |
string | str/unicode | string | string |
bytes | 可包含任意的字节顺序 | string | str | []byte | ByteString |