Protobuf生成Go代码中双下划线(__)包名的含义及相关疑问
Protobuf生成Go代码中
package __的疑问解答 __是Protobuf代码生成器的占位符,当它无法确定正确的Go包名时就会输出这个值。常见原因包括你的.proto文件没设置go_package选项、选项格式不合法,或者生成过程中路径解析出问题。- 它和代码所在的文件夹名称完全没关系。Go默认用文件夹名作为包名,但这里的
__是生成器的 fallback 临时值,和文件夹名没有关联。 - 代码能正常编译是因为
__是Go语法允许的合法标识符(虽然不符合常规命名规范)。但这属于不规范情况,建议在.proto文件里明确设置go_package来指定正确包名,比如:
这样生成的代码就会用你指定的包名,而不是option go_package = "自定义的包路径;自定义包名";__。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

