Protocol Buffers 学习(3):枚举类型

栏目: 服务器 · 发布时间: 8年前

内容简介: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_aliastrue

enum EnumAllowingAlias {
  option allow_alias = true;
  UNKNOWN = 0;
  STARTED = 1;
  RUNNING = 1;
}
enum EnumNotAllowingAlias {
  UNKNOWN = 0;
  STARTED = 1;
  // RUNNING = 1;  // 取消这行的注释 会报错
}

更多说明

  • 枚举常量必须在32位整数范围内,因为枚举值线上使用 varint 编码,所以负值无效,不推荐在枚举中定义负值
  • 反序列化的时候,消息将保留不能识别的枚举值

更多信息请参考Google


以上所述就是小编给大家介绍的《Protocol Buffers 学习(3):枚举类型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

苹果的味道

苹果的味道

袁烨 / 2012-1 / 59.80元

《苹果的味道:iPad商务应用每一天》是一本介绍iPad商务应用的书。编者从App Store丰富的应用程序库中选取了MobileRSS、Pocket Informant HD、iWork、MindPad、乐顺笔记本等二十多款经典的应用程序,从商务资讯的获取、商务日程安排、商务文档的制作和演示等八个商务应用方面,以图文并茂的方式介绍了这些应用程序在商务工作中的使用方法。通过《苹果的味道:iPad商......一起来看看 《苹果的味道》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器