如何在.proto文件中将"required"作为变量名使用?
如何在Protocol Buffers中使用"required"作为字段名?
你遇到的问题很典型——"required"是Protocol Buffers的保留关键字(在proto2里用来标记字段为必填项,即便在proto3里这个修饰符被移除了,它依然是被保留的关键字),直接作为字段名会触发编译错误。
不过别担心,Protocol Buffers提供了一个简单的语法来避开这个限制:用反引号(`)把保留关键字包裹起来,这样编译器就会把它当作普通的字段名来处理,而不是解析为关键字。
修改后的.proto文件代码如下:
message Ack { bool `required` = 1; optional string address = 2; // 注意:如果使用proto3语法,建议去掉optional修饰符——proto3已废弃required/optional等字段修饰符,默认所有字段均为可选 }
额外补充两点说明:
- 用反引号包裹后,生成的业务代码(比如Go、Java、Python等语言)里,字段名依然会正常映射为
required,不会影响后续的代码调用逻辑; - 如果你是在使用proto3,记得调整字段修饰符的写法,避免出现语法警告或错误。
内容的提问来源于stack exchange,提问作者Shoaib Amin
相关产品推荐
相关产品推荐

