gpt4 book ai didi

go - 在 Go 中构建使用 "oneof"的 protobuf 消息

转载 作者:行者123 更新时间:2023-12-03 02:09:01 27 4
gpt4 key购买 nike

我最近开始尝试使用 GoLang 和 Protocol Buffers,我尝试使用以下消息

message KumoAPIMessage {
oneof msg {
OpenStackEnvironmentContext osEnvContext = 1;
}
}

message OpenStackEnvironmentContext {
string username = 1;
string password = 2;
string domain = 3;
string project = 4;
string authUrl = 6;
string region = 7;
string contextName = 8;
}

这些消息经过精心设计,以便可以对其进行编码并通过 TCP 发送到服务器代理(用 Scala 编写)。我遇到的问题实际上是在 go 应用程序中构建消息。

我收到了一条 OpenStackEnvironmentContext 消息,但我不知道如何将其包装在 KumoAPIMessage 中,我尝试了以下方法

apiMessage := kumo.KumoAPIMessage{ Msg: context, }

但这只会在编译时引发以下错误

cannot use context (type kumo.OpenStackEnvironmentContext) as type kumo.isKumoAPIMessage_Msg in field value:
kumo.OpenStackEnvironmentContext does not implement kumo.isKumoAPIMessage_Msg (missing kumo.isKumoAPIMessage_Msg method)

如果有人知道我哪里出了问题,你将成为我的英雄。

最佳答案

这一次我能够回答我自己的问题了。经过大量的谷歌搜索和实验,我得到了以下解决方案

apiMessage := &kumo.KumoAPIMessage{&kumo.KumoAPIMessage_OsEnvContext{context}}

protobufs 的 GoLang 编译器似乎为包装消息生成了一个结构,并为它所包装的消息类型生成了一个结构

关于go - 在 Go 中构建使用 "oneof"的 protobuf 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38257434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com