登录
首页 >  Golang >  Go问答

protoc 在 go 源文件上生成导入路径

来源:stackoverflow

时间:2024-04-06 16:09:37 108浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《protoc 在 go 源文件上生成导入路径》,聊聊,我们一起来看看吧!

问题内容

我在 $gopath/src/github.com/cs/p/a/a.proto 中有一个 pb 文件,在 $gopath/src/github.com/cs/p/b/ 中有另一个 pb 文件b.proto。并且 a.proto 导入 b.proto 如下:

import "b/b.proto"

现在我输入$gopath/src/github.com/cs/p并执行以下命令:

协议 --go_out=plugins=grpc:. a/a.proto

然后我发现$gopath/src/github.com/cs/p/a/中生成了a.pb.go,其中有这样一条语句:import "b"

当我构建项目时,它说找不到包 b。我应该怎么办 ?实际上我希望 a.pb.go 像这样导入 bimport github.com/cs/p/b。能做到吗?


解决方案


是的!

您需要在 protoc 编译步骤中包含导入路径。因此,假设您的 git 源位于路径 $gopath/src 下,您将添加包含标志 "-i.:$gopath/src" ,如下所示:

protoc --go_out=plugins=grpc:. "-i.:$gopath/src" a/a.proto

导入后,要引用任何消息类型,请使用作用域路径 < 包名称 >.< 消息名称 >

例如,(git 托管)定义:

// this file resides here: ${gopath}/src/github.com/bib/pb/person.proto
package tutorial;

message person {
  string name = 1;
}

将像这样导入和引用:

import "github.com/bib/pb/person.proto"

message AddressBook {
  repeated tutorial.Person people = 1;
}

理论要掌握,实操不能落!以上关于《protoc 在 go 源文件上生成导入路径》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>