protobuf 中go_package的意思

发布时间 2023-06-03 23:14:36作者: 若-飞

一个简单的 protobuf 文件定义如下:

response.proto

syntax = "proto3";

option go_package = "github.com/TripleCGame/apis/api;api";
import "google/protobuf/struct.proto";

message Response {
  int32 code = 1;
  google.protobuf.Struct data = 2;
  string msg = 3; 
}

syntax = “proto3”;—指定使用 proto3 语法

option go_package = "github.com/TripleCGame/apis/api;api";—前一个参数用于指定生成文件的位置,后一个参数指定生成的 .go 文件的 package 。具体语法如下:

option go_package = "{out_path};out_go_package";

注意:这里指定的 out_path 并不是绝对路径,只是相对路径或者说只是路径的一部分,和 protoc 的 --go_out 拼接后才是完整的路径。

生成的pb.go文件:

go_package的定义也体现在import 该proto的文件的地方:

 这里刚好import的时候制定路径