packages
可以在.proto文件中增加一个可选的package标记来防止protocol消息类型之间的名字冲突.
package foo.bar;
message Open { ... }
在定义消息类型的字段时可以这样使用package标志:
message Foo {
...
foo.bar.Open open = 1;
...
}
包标志对生成代码的影响依赖所选的语言:
- c++中, 生成类包裹在c++ namespace中. 例如, Open将在namespace foo::bar中.
- 在java中, 包被作为java package使用, 除非你在.proto文件中显式提供java_package选项.
- 在Python中, 这个包指令将被忽略, 因为Python模块是根据他们在文件系统中的位置被组织的.
- 在Go中, 包被作为Go package使用, 除非你在.proto文件中显式提供go_package选项.
- 在Ruby中, 生成的代码被包裹在内嵌的Ruby namespaces, 转换为要求的Ruby capitalization风格(第一个字符大写;如果第一个字符不是字母则加一个PB_前缀). 例如, Open将在namespace Foo::Bar中.
- 在C#中,包在转换为PascalCase后用作命名空间,除非在.proto文件中显式提供option csharp_namespace,例如Open将在命名空间Foo.Bar中。