具体的目录结构如上图所示:
其中在hello.proto中引入了base.proto了, 代码示例如下:
syntax = "proto3";
option go_package = "./;proto";
import "base.proto";
import "google/protobuf/empty.proto";
service SayHello{
rpc Greet(google.protobuf.Empty) returns(Pong);
}
base的proto文件为:
syntax = "proto3";
option go_package = "./;proto";
message Pong{
string name = 1;
string url = 2;
}
具体的命令如下:
$ protoc -I . base.proto -I ./proto hello.proto --go_out=plugins=grpc:./proto/base
这里面的需要有几个proto文件就需要有几个-I 这里面有2个proto文件,所以有两个-I ;-I 后面空一格写的是,该proto文件所在的具体的目录,注意只是目录,不写到文件;接下来继续空一个,写上该proto文件的名字,注意只是名字,不包含任何的路径的;最后–go_out=plugins=grpc: 这都是任意写的,但是在这后面的就是将生成的go文件放置的具体位置了。生成后的文件图如下:
注意:后面的目录一定要先进行创建,否则是无法生成文件的