doufan3958 2016-07-08 00:52
浏览 1877
已采纳

在Go中使用“ oneof”构建protobuf消息

I've recently started toying with GoLang and Protocol Buffers, I have the following messages I'm trying to use

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;
}

These messages are deisgned so that they can be marshaled and sent via TCP to a server agent (written in Scala). The problem I'm having is actually building the messages in the go application.

I have got a OpenStackEnvironmentContext message made but I can't work out how to wrap it in the KumoAPIMessage, I've tried the following

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

But that just sends up throwing the following error on compile

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)

If any one has any clue about where I am going wrong, you will be my hero.

  • 写回答

1条回答 默认 最新

  • dp20011 2016-07-08 05:08
    关注

    For once I have been able to answer my own question. With a lot of googling and experimenting I have gotten to the following solution

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

    It seems that the GoLang compiler for protobufs generates a struct for the wrapper message AND a struct for the message type it is wrapping

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测