2016-07-08 1 views
0

Я недавно начал играть с GoLang и протокола буферы, я следующие сообщения Я пытаюсь использоватьСтроительные Protobuf сообщения в Go, которые используют «oneof»

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

Эти сообщения deisgned так, что они могут быть маршалированы и отправлены через TCP к серверному агенту (написанному на Scala). Проблема, с которой я столкнулась, - это на самом деле создавать сообщения в приложении go.

Я получил сообщение OpenStackEnvironmentContext сделал, но я не могу работать, как обернуть его в KumoAPIMessage, я попытался следующие

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

Но это просто посылает вверх метание следующую ошибку на компиляции

Если у кого-нибудь есть информация о том, где я ошибаюсь, вы станете моим героем.

ответ

2

На этот раз я смог ответить на свой вопрос. С большим количеством и прибегая к помощи экспериментирования я получил к следующему решению

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

Кажется, что компилятор GoLang для protobufs генерирует-структуру для сообщения обертку и в структуры для сообщения типа он оборачивает