这种模式通常用于资源有限的平台,例如移动手机平台中。 allow_alias : 允许将相同的常量值分配给不同的枚举常量,用来定义别名。该选项为枚举选项。 网络版本通讯录的实现 Protobuf 还常用于通讯协议、服务端数据交换场景。那么在这个示例中,我们将实现一个网络版本通讯录,模拟实现客户端与服务端的交互,通过 Protobuf ...
还可以通过给不同的enum元素赋相同的值来定义别名,要求设置allow_alias选项的值为true,否则会报错。 // 正确示例 enum EnumAllowingAlias { option allow_alias = true; // 开启allow_alias选项 UNKNOWN = 0; STARTED = 1; RUNNING = 1; // RUNNING和STARTED互为别名 } // 错误示例 enum EnumNotAllowingAl...
枚举类型的第一个选项的标识符必须是0,这也是枚举类型的默认值。 别名(Alias),允许为不同的枚举值赋予相同的标识符,称之为别名,需要打开allow_alias选项。 message EnumAllowAlias { enum Status { option allow_alias =true; UNKOWN =0; STARTED =1; RUNNING =1; } } 4.3 使用其他消息类型 Result是另一个...
您可以通过将相同的值分配给不同的枚举常量来定义别名。为此,您需要将allow_alias选项设置为true,否则协议编译器将在找到别名时生成错误消息。 message MyMessage1 { enum EnumAllowingAlias { option allow_alias = true; UNKNOWN = 0; STARTED = 1; RUNNING = 1; } } message MyMessage2 { enum EnumNotAll...
你可以通过将不同的枚举常量指定位相同的值。如果这样做你需要将allow_alias设定位true,否则编译器会在别名的地方产生一个错误信息。 1 2 3 4 5 6 7 8 9 10 11 enumEnumAllowingAlias { option allow_alias =true; UNKNOWN =0; STARTED =1;
option allow_alias = true; UNKNOWN = 0; STARTED = 1; RUNNING = 1; } enum EnumNotAllowingAlias { UNKNOWN = 0; STARTED = 1; // RUNNING = 1; // 取消此行注释将导致 Google 内部的编译错误和外部的警告消息 } 枚举器常量必须在 32 位整数范围内。由于enum值在线上使用varint encoding,负值效率...
message EnumAllowAlias { enum Status { option allow_alias = true; UNKOWN = 0; STARTED = 1; RUNNING = 1; } } 1. 2. 3. 4. 5. 6. 7. 8. message中的STARTED 与RUNNING属于相同的标识符。 3.4 repeated字段 repeated是protobuf中的一种限定修饰符,用来指定某一个字段可以存放同一个类型的多个...
别名(Alias),允许为不同的枚举值赋予相同的标识符,称之为别名,需要打开allow_alias选项。 代码语言:javascript 复制 message EnumAllowAlias{enumStatus{option allow_alias=true;UNKOWN=0;STARTED=1;RUNNING=1;}} 4.3 使用其他消息类型 Result是另一个消息类型,在 SearchReponse 作为一个消息字段类型使用。
假如你需要给不同的枚举常量设置为相同的值,那么你必须设置别名,这样做必须将 allow_alias 选项设置为 true ,否则会报错! message MyMessage1 { enum EnumAllowingAlias { option allow_alias = true; UNKNOWN = 0; STARTED = 1; RUNNING = 1;
option allow_alias = true; MOBILE = 0; HOME = 1; WORK = 2; Personal = 2; } oneof关键字 如果有一个包含许多字段的消息,并且最多只能同时设置其中的一个字段,则可以使用oneof功能,示例如下: message Person{ string name = 1; // 名字 ...