使用 protobuf 枚举值作为字段编号
Posted
技术标签:
【中文标题】使用 protobuf 枚举值作为字段编号【英文标题】:Using protobuf enum value as a field number 【发布时间】:2014-03-17 05:50:29 【问题描述】:我想知道是否可以使用 Google Protocol Buffers 的枚举常量作为其他消息的字段编号,例如
enum Code
FOO = 100;
BAR = 101;
message Message
required string foo = FOO;
此代码不起作用,因为FOO
的类型是enum Code
,并且只能使用数字作为字段编号。
我正在尝试构建像animal example 这样的多态消息定义,它将enum Type
和required Cat animal = 100;
中的Cat = 1;
定义为唯一的分机号。
我认为这样做会很好
message Message
required string foo = FOO.value;
,这样我就可以保证扩展字段号的唯一性,而不需要引入另一个幻数。
那么问题来了:是否可以在协议缓冲区语言中引用枚举的整数值?
【问题讨论】:
据我所知,简单地说:“没有” 【参考方案1】:不,没有办法做到这一点。对不起。
顺便说一句,相同枚举类型的两个枚举数实际上可以具有相同的数值,因此在枚举中定义这些值实际上并不能确保唯一性。
【讨论】:
感谢您的澄清!以上是关于使用 protobuf 枚举值作为字段编号的主要内容,如果未能解决你的问题,请参考以下文章