protobuf 使用其他消息类型message的三种方式

更方便的在微信公众号阅读文章可以关注公众号:海生的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;
}

你可能感兴趣的:(goprotobuf)