标量消息字段可以具有以下类型之一 ,该表显示 .proto 文件中指定的类型,以及自动生成的类中的相应类型:
.proto 类型 | Go 类型 | 注释 | 默认值 |
---|---|---|---|
int32 | int | 使用可变长度编码。 对负数进行编码效率低下。如果您的字段可能有负值,请改用 sint32。 | 0 |
int64 | long | 使用可变长度编码。 对负数进行编码效率低下。如果您的字段可能有负值,请改用 sint64。 | 0 |
uint32 | uint | 使用可变长度编码。 | 0 |
uint64 | ulong | 使用可变长度编码。 | 0 |
sint32 | int | 使用可变长度编码。 带符号的 int 值。 这些比常规 int32 更有效地编码负数。 | 0 |
sint64 | long | 使用可变长度编码。 带符号的 int 值。 这些比常规 int64 更有效地编码负数。 | 0 |
fixed32 | uint32 | 总是四个字节。 如果值通常大于 2^28,则比 uint32 更有效。 | 0 |
fixed64 | uint64 | 总是八个字节。 如果值通常大于 2^56,则比 uint64 更有效。 | 0 |
sfixed32 | int32 | 总是四个字节。 | 0 |
sfixed64 | int64 | 总是八个字节。 | 0 |
float | float32 | 0 | |
double | float64 | 0 | |
bool | bool | false | |
string | string | 字符串必须始终包含 UTF-8 编码或 7 位 ASCII 文本,并且不能超过 2^32。 | empty string |
bytes | []byte | 可以包含不超过 2^32 的任意字节序列。 | empty bytes |
- 对于枚举,默认值是第一个定义的枚举值,必须为 0。
- 对于消息字段,未设置该字段。 它的确切值取决于语言。
- 请注意,对于标量消息字段,一旦解析了消息,就无法判断一个字段是显式设置为默认值,还是根本没有设置(例如布尔值是否设置为 false)。
- if a scalar message field is set to its default, the value will not be serialized on the wire.