有没有办法为proto文件生成的go代码定义导入别名
我正在导入两个不同的原型文件在我的当前原型文件如下有没有办法为proto文件生成的go代码定义导入别名,go,protocol-buffers,protoc,Go,Protocol Buffers,Protoc,我正在导入两个不同的原型文件在我的当前原型文件如下 import "author/message/name.proto" import "reader/message/details.proto" 在name.proto中,我有go\u package=“author/message”,在details.proto中,我有go\u package=“reader/message”,因此在生成pb.go时,导入别名如下所示 message1 "a
import "author/message/name.proto"
import "reader/message/details.proto"
在name.proto中,我有go\u package=“author/message”
,在details.proto中,我有go\u package=“reader/message”
,因此在生成pb.go时,导入别名如下所示
message1 "author/message"
message2 "reader/message"
我试图找到一种方法,在pb.go生成过程中分别命名authormsg和readermsg这样的别名。我已经检查了文档,但找不到任何方法来执行此操作。您可以像下面这样添加显式Go程序包名称:
:name.proto
选项go\u package=“author/message;authormsg”
:details.proto
选项go\u package=“reader/message;readermsg”
;
)分隔的包名
注:
不鼓励这种用法,因为默认情况下,包名将以合理的方式从导入路径派生。
是的,对了,我怎样才能让protoc理解它必须为特定的packgemay生成一个命名的导入我可以问一下这个用例是什么?为什么要更改
.pb.go
文件中的包名?@backgreen只是为了可读性,我尝试了此解决方案,但仍在pb.go中,它正在生成包别名message1和message2。即使我添加了选项go\u package=“author/message;authormsg”
选项go\u package=“reader/message;readermsg”
@bhanureddah,您也不是指go包名,例如name.pb.go中的包authormsg
。相反,您希望在pb.go中没有import message1“author/message”
?这可能是当您的name.pb.go
真正驻留在路径author/message
中时,protoc gen go
假设并没有检查pb.go
中的真正包时。但是,你为什么关心这个?当使用生成的代码时,您根本看不到它。是的,在导入语句中,包别名与导入(我的名字“reader/message”)不同,因为有多个包导入,如下面的import(message1“reader/message”message2“writer/message”message3“fastreader/message”message4“fastwriter/message”)
包别名消息1。。。message4在阅读代码时变得越来越困难,因此希望通过生成pb使其更具可读性。如下图所示导入(reader“reader/message”writer“writer”writer/message“fastreader”fastreader/message“fastwriter”fastwriter/message)