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):
}

你可能感兴趣的:(protobufgolang)