偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《导入proto文件并编译》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容我在以下目录中有两个 proto 文件 -
parsers/
> flights/
> flights_proto/
> flights.proto
> flights.pb.go
> flightspostbooking
> flights_postbooking_proto/
> flights_postbooking.proto
> flights_postbooking.pb.go
以下是原型文件的内容 -
flights.proto
=============
package "flights_proto";
message flight {
...
}
flights_postbooking.proto
=========================
package "flights_postbooking_proto"
import "flights_proto/flights.proto"
message cancel {
flight flight = 1;
...
}
我无法弄清楚如何编译 flights_postbooking.proto
以生成 pb.go
文件。
我尝试从 parsers
目录执行以下操作。
protoc --proto_path=flightspostbooking/flights_postbooking_proto --proto_path=flights/flights_proto flightspostbooking/flights_postbooking_proto/flights_postbooking.proto --go_out=plugins:flights_postbooking_proto
但是我收到错误 flights_proto/flights.proto: file not found
解决方案
从 parsers
目录运行 protoc
,并使用原始文件的基目录,即 .
protoc --proto_path=. --go_out=plugins=grpc:flightpostbooking/flights_postbooking_proto flightpostbooking/flights_postbooking_proto/flights_postbooking.proto
由于您有 parsers
目录作为基础,因此您的导入应该是:
import "flights/flights_proto/flights.proto"
关键是使用相对于 proto_path
的导入路径。
好了,本文到此结束,带大家了解了《导入proto文件并编译》,希望本文对你有所帮助!关注编程网公众号,给大家分享更多Golang知识!