英文:
Can golang protocol buffers with gRPC be cross compiled and used on different OS platforms?
问题
这个问题是关于在不同的操作系统平台上编译和使用golang协议缓冲区(使用gRPC)的,我还没有见过类似的问题。在Windows上编译一个.proto文件,然后在Linux上使用生成的文件,这种做法可行吗?反之亦然?
我在Windows和Linux上编译了同一个.proto文件,使用diff命令显示了不同的结果。一个区别是Windows编译版本有时会在请求结构体的字段中重复出现json,例如:Field1Name *type`protobuf ,bytes,1,opt,name=my_name,json=myName" json:"my_name,omitempty"`
,而Linux版本是:Field1Name *type`protobuf ,bytes,1,opt,name=my_name" json:"my_name,omitempty"`
。这种情况经常发生,有时所有字段都有这个问题,有时只有一部分字段有问题,有时对于给定的请求结构体没有任何字段有问题。
另一个区别是底部的fileDescriptor在两个版本中完全不同。Windows版本比Linux版本多大约40行。
英文:
This question is specifically about compiling and using golang protocol buffers (with gRPC) on different OS platforms and I haven't seen any like it. Is it possible to compile a .proto file on Windows, and then use the generated file on Linux? Or vice versa?
I compiled the same .proto file on both Windows and Linux and diff showed different results. One difference is that the Windows compiled version sometimes repeats json in fields of request structs like this: Field1Name *type`protobuf ,bytes,1,opt,name=my_name,json=myName" json:"my_name,omitempty"`
whereas the Linux version is: Field1Name *type`protobuf ,bytes,1,opt,name=my_name" json:"my_name,omitempty"`
. This happens a lot, sometimes all the fields have this issue, sometimes only some of them, and sometimes none of them for a given request struct.
The other difference is that the fileDescriptor at the bottom is completely different for the two versions. The Windows version is longer by about 40 lines.
答案1
得分: 1
如果您使用相同版本的基于Go的工具来编译proto文件,您应该会得到相同的输出。我建议您再次确认两者是否是相同的版本。
英文:
If you're using the same version of the same Go-based tool to compile the proto, you should get the same output. I would double-check that both are identical versions.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论