注:内容翻译自官网文档 Language Guide (proto3) 中的 Packages 一节
可以在.proto文件中增加一个可选的包标记来防止protocol消息类型之间的名字冲突.
package foo.bar;
message Open { ... }
在定义消息类型的字段时可以这样使用包标志:
message Foo {
...
foo.bar.Open open = 1;
...
}
包标志对生成代码的影响依赖所选的语言:
在protocol buffer语言中, 类型命名解析类似 C++: 首先搜索最内层的范围, 然后最内层的外一层, 以此类推, 每个包都被认为是它父包的"内层". 在最前面的'.'(例如, .foo.bar.Baz)意味着替换为从最外层范围开始.
protocol buffer编译器通过解析导入的.proto文件来解析所有的类型命名. 每个语言的代码生成器知道在这个语言中如何引用每个类型, 即使它有不同的范围规则.