golang使用protobuf中的oneof

Posted o_ra

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang使用protobuf中的oneof相关的知识,希望对你有一定的参考价值。

作用类似c里的联合体,写配置文件类似

message BBB{
    string b=1;
}
message CCC{
    int b=1;
}
message AAA {
    oneof payload {
        BBB b;
        CCC c;
    }
}

使用的时候导入例如为xxx模块:
创建结构体时候要手动创建oneof里的结构,写法类似:

msg := &xxx.AAA{Payload: &xxx.AAA_BBB{B: &xxx.B{"123"}}}

解析出来判断是BBB还是CCC的时候使用

switch msg.Payload.(type) {
    case *(xxx.AAA_BBB):
    case *(xxx.AAA_CCC):
}

以上是关于golang使用protobuf中的oneof的主要内容,如果未能解决你的问题,请参考以下文章

protobuf“oneof”子protobuf对象指针杀死程序

Protobuf-net - 如何使用 oneof

为啥protobuf序列化“oneof”消息使用if-else

.proto 文件中带有 oneof 的 Protobuf-net

ProtoBuf练习

如果子消息没有字段,如何在 protobuf 消息上分配 oneof 字段?