内容简介:Protocol Buffers 学习(3):枚举类型
首先我们看一个枚举类型的例子
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 result_per_page = 3;
enum Corpus {
UNIVERSAL = 0;
WEB = 1;
IMAGES = 2;
LOCAL = 3;
NEWS = 4;
PRODUCTS = 5;
VIDEO = 6;
}
Corpus corpus = 4;
}
Corpus是一个枚举类型,并且枚举的第一个常量映射为 0
,每个枚举必须包含一个常量, 0
必须是第一个元素
这样有两个好处
- 0正好是数字类型的默认值
-
0始终作为第一个元素,这样可以和
proto2兼容
值重复问题
你可以为不同的枚举常量赋相同的值,但是要设置 allow_alias
为 true
enum EnumAllowingAlias {
option allow_alias = true;
UNKNOWN = 0;
STARTED = 1;
RUNNING = 1;
}
enum EnumNotAllowingAlias {
UNKNOWN = 0;
STARTED = 1;
// RUNNING = 1; // 取消这行的注释 会报错
}
更多说明
-
枚举常量必须在32位整数范围内,因为枚举值线上使用
varint编码,所以负值无效,不推荐在枚举中定义负值 - 反序列化的时候,消息将保留不能识别的枚举值
更多信息请参考Google
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 测者的测试技术手册:Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)
- 测者的JUnit单元测试探坑记:Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)
- c# – 循环枚举类型
- Python 的枚举类型
- TypeScript 枚举类型用法示例
- 反编译理解java枚举类型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTTP Essentials
Stephen A. Thomas、Stephen Thomas / Wiley / 2001-03-08 / USD 34.99
The first complete reference guide to the essential Web protocol As applications and services converge and Web technologies not only assume HTTP but require developers to manipulate it, it is be......一起来看看 《HTTP Essentials》 这本书的介绍吧!