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
必须是第一个元素javascript
这样有两个好处java
proto2
兼容你能够为不一样的枚举常量赋相同的值,可是要设置allow_alias
为true
google
enum EnumAllowingAlias {
option allow_alias = true;
UNKNOWN = 0;
STARTED = 1;
RUNNING = 1;
}
enum EnumNotAllowingAlias {
UNKNOWN = 0;
STARTED = 1;
// RUNNING = 1; // 取消这行的注释 会报错
}复制代码
varint
编码,因此负值无效,不推荐在枚举中定义负值更多信息请参考Google编码