protobuf golang从不同目录导入.proto和.pb.proto

Dot*_*tan 5 go protocol-buffers

我有一个名为 myProtos 的库,如下所示

\n\n
.\n|-- proto\n|---- hello.proto\n|\n|-- generated\n\xe2\x94\x94---- hello.pb.go\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有一个外部的 .proto 文件,example.proto应该导入hello.proto

\n\n

所以文件的顶部看起来像这样:

\n\n
syntax = "proto3";\npackage example;\nimport "path/to/myProtos/proto/hello.proto"\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,当我编译时example.proto,出现导入错误example.pb.go因为它有导入行 import "path/to/myProtos/proto/hello.pb.go"

\n\n

我尝试添加两个导入路径,但收到“导入但未使用错误”。我还尝试进行相对导入并将两个目录作为标志传递给 protoc,这有效,但我需要 go 文件中的导入路径是绝对的。

\n\n

我如何告诉 protoc go 文件上的路径不同?

\n\n

在这种情况下有更好的“最佳实践”吗?

\n

Mus*_*Zia -1

package generated;在您的文件内使用hello.proto

然后,protoc -I proto/ proto/*.proto --go_out=generated会生成一个包名为 的hello.pb.go内部文件夹。generatedgenerated

proto 文件中的包告诉 protobuf 生成器在生成的文件中使用哪个包。