登录
首页 >  Golang >  Go问答

如何在 cmd 中生成 protobuf 文件而不使用“option go_package”

来源:stackoverflow

时间:2024-02-24 09:18:26 315浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何在 cmd 中生成 protobuf 文件而不使用“option go_package”》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我必须从导入另一个 proto 文件的 proto 文件生成 protobuf 文件。 另一项要求是,它必须由 cmd 生成(通过不在 proto 文件中定义“option go_package”)。


正确答案


假设您有 3 个文件 foo.protopoo.protozoo.proto。文件 foo.protopoo.protozoo.proto 导入消息结构。您需要按照特定的顺序编写命令,首先将 foo.proto(从其他导入) 放在前面,然后将 poo.proto(向其他导入)zoo .proto(导入其他) 之后。

这是在不定义选项go_package的情况下生成protobuf的命令

protoc --proto_path=./ --go_out=./pb --go-grpc_out=./pb
--go_opt=mfoo.proto=./ --go-grpc_opt=mfoo.proto=./
--go_opt=mpoo.proto=./ --go-grpc_opt=mpoo.proto=./
--go_opt=mzoo.proto=./ --go-grpc_opt=mzoo.proto=./
foo.proto goo.proto zoo.proto

请注意文件名前的 m,它会替换代码中的选项 go_package

foo.proto

syntax = "proto3";
import "goo.proto";
import "zoo.proto";

service foo {
    rpc foorpc(poomessage) returns (zoomessage) {}
}

poo.proto

syntax = "proto3";

message poomessage {
    string body = 1;
}

zoo.proto

syntax = "proto3";

message ZooMessage {
    string body = 1;
}

终于介绍完啦!小伙伴们,这篇关于《如何在 cmd 中生成 protobuf 文件而不使用“option go_package”》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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