我最近开始使用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)
如果有人知道我哪里出错了,你就会成为我的英雄。
答案 0 :(得分:2)
我曾经能够回答自己的问题。通过大量的谷歌搜索和实验,我得到了以下解决方案
<form action="page2.html">
<button type="button" class="accordion">Section 1</button>
<div class="panel">
Ch.1: <input type=checkbox id="ch1" ><br>
Ch.1: <input type=checkbox id="ch1"><br>
Ch.1: <input type=checkbox id="ch1"><br>
</div>
<button type="button" class="accordion">Section 2</button>
<div class="panel">
Ch.1: <input type="checkbox" id="ch1"><br>
Ch.1: <input type="checkbox" id="ch1"><br>
Ch.1: <input type="checkbox" id="ch1"><br>
</div>
</form>
似乎用于protobufs的GoLang编译器为包装器消息生成一个结构,并为它包装的消息类型生成一个结构