登录
首页 >  Golang >  Go问答

是否能在编译时使用 protoc 生成的 grpc.pb.go 中的结构?

来源:stackoverflow

时间:2024-02-18 13:30:27 341浏览 收藏

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

问题内容

我将为从 proto 消息生成的结构和从 grpc 服务生成的接口指定不同的输出目录。

我通过这两个标志实现了这一点:

--go_out=internal/proto
--go-grpc_out=internal/grpc

生成internal/proto包后,不会导入到mymodel_grpc.pb.go文件中,但如果有任何标志可以在编译过程中自动执行此操作,那就非常方便了。

我认为 --go-grpc_opt 标志可能有这样的选项,但我找不到任何选项。

这种场景的任何经历都很有趣。


正确答案


如果我理解正确的话,您希望在一个包中生成 protobuf 消息,并在另一个包中生成服务绑定。

Protobuf 文件包含 package 指令,并且可以将其绑定到 options 指令,例如对于 Go(lang),使用 go_package=。绑定比例为1:1;一个包(及其消息|服务)绑定到一个,例如打包。

注意 Protobuf 也支持多种语言,因此它必须提供可以应用一次(在 Protobuf 文件中)但可以多次使用(在每种语言生成的代码中)的通用解决方案。

所以,我认为你的解决方案是将你的消息和服务分离到不同的包中(具有不同的 optionsgo_package 规范。然后,可以引导 protoc 生成这些包以单独的 Golang 包。

好了,本文到此结束,带大家了解了《是否能在编译时使用 protoc 生成的 grpc.pb.go 中的结构?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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