Golang protobufs 有名称冲突
Golang protobufs has a name conflict over
我有两个相互通信的服务,并且有单独的协议文件。两者之间有一些共同的消息类型。当尝试测试 运行 我得到:
2020/08/24 13:40:42 WARNING: proto: file "delivery.proto" has a name
conflict over release.Patient previously from:
"gitlab.com/dhf0820/roirelease/protobufs/relPB" currently from:
"gitlab.com/dhf0820/roi_delivery/protobufs/delPB"
如您所见,它们具有不同的包名称 relPB 和 delPB。病人在两种服务中都有使用,我 marshal/unmarshal 在两者之间发送正确的消息。我不确定这是不是正确的方法。
有没有更好的方法或者是怎么回事。我似乎有独特的名字。
看起来这些名称在生成的 Go 代码域 中是唯一的,但在 protobuf 域.[=14= 中不是]
您真的可以将 protobuf 视为自己的语言,具有自己的包和命名空间语义(实际上类似于 C++)。在该域中,实际文件名无关紧要,重要的是文件中定义的包。
您的两个文件的顶部可能都有 package release;
。这意味着,在 protobuf 世界中, release.Patient
被定义了两次。 protoc
可能仍然能够意外生成有效的 Go 代码,但它仍然是一个格式错误的原型定义。如果您尝试在其他语言(例如 C++)中使用相同的定义,或者如果您尝试使用依赖于原型反射的库,您可能不会有同样的运气。如果您尝试将其中一条消息用作另一个文件中的字段,它也可能会中断; release.Patient
指的是哪个?
我有两个相互通信的服务,并且有单独的协议文件。两者之间有一些共同的消息类型。当尝试测试 运行 我得到:
2020/08/24 13:40:42 WARNING: proto: file "delivery.proto" has a name
conflict over release.Patient previously from:
"gitlab.com/dhf0820/roirelease/protobufs/relPB" currently from:
"gitlab.com/dhf0820/roi_delivery/protobufs/delPB"
如您所见,它们具有不同的包名称 relPB 和 delPB。病人在两种服务中都有使用,我 marshal/unmarshal 在两者之间发送正确的消息。我不确定这是不是正确的方法。
有没有更好的方法或者是怎么回事。我似乎有独特的名字。
看起来这些名称在生成的 Go 代码域 中是唯一的,但在 protobuf 域.[=14= 中不是]
您真的可以将 protobuf 视为自己的语言,具有自己的包和命名空间语义(实际上类似于 C++)。在该域中,实际文件名无关紧要,重要的是文件中定义的包。
您的两个文件的顶部可能都有 package release;
。这意味着,在 protobuf 世界中, release.Patient
被定义了两次。 protoc
可能仍然能够意外生成有效的 Go 代码,但它仍然是一个格式错误的原型定义。如果您尝试在其他语言(例如 C++)中使用相同的定义,或者如果您尝试使用依赖于原型反射的库,您可能不会有同样的运气。如果您尝试将其中一条消息用作另一个文件中的字段,它也可能会中断; release.Patient
指的是哪个?