更方便的在微信公众号阅读文章可以关注公众号:海生的go花园
在我们写protobuf最基础的是有 基本的数字,字符串,枚举类型组成,在这些基础的类型基础上,我们组合成一个message类型。
接下来我们探讨一下,如何在message里面再使用其他的message类型。
方式一:使用其他消息类型作为字段类型
您可以使用其他消息类型作为字段类型。
例如,我们想在SearchResponse使用Result类型。
此时我们可以先在同一个.proto文件中定义一个Result消息类型,然后在SearchResponse这个消息类型中当做自己的一个 字段
使用如下。
message SearchResponse {
repeated Result results = 1;
}
message Result {
string url = 1;
string title = 2;
repeated string snippets = 3;
}
方式二:导入其他文件的方式
在上面的例子中,Result和SearchResponse消息类型在同一个文件中定义。
如果我们想用作字段类型的消息类型Result已经在另一个.proto文件中定义了怎么办?
可以通过导入其他.proto文件来使用它们的定义。
要导入另一个的定义,您可以在文件顶部添加一个导入语句:.proto
import "myproject/other_protos.proto";
比如在 a.proto的文件中有Result
我们那么引入使用
import "myproject/a.proto";
方式三:嵌套类型
message SearchResponse {
message Result {
string url = 1;
string title = 2;
repeated string snippets = 3;
}
repeated Result results = 1;
}
如果要在其父消息类型之外重用此消息类型,请将其称为_Parent_._Type_:
message SomeOtherMessage {
SearchResponse.Result result = 1;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。