title: Building protobuf messages in Go that use "oneof"
body: <p>I've recently started toying with GoLang and Protocol Buffers, I have the following messages I'm trying to use</p>
  
  <pre><code>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;
  }
  </code></pre>
  
  <p>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.</p>
  
  <p>I have got a <code>OpenStackEnvironmentContext</code> message made but I can't work out how to wrap it in the <code>KumoAPIMessage</code>, I've tried the following</p>
  
  <pre><code>apiMessage := kumo.KumoAPIMessage{ Msg: context, }
  </code></pre>
  
  <p>But that just sends up throwing the following error on compile</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>If any one has any clue about where I am going wrong, you will be my hero.</p>