扩展不同数量的字段时,如何用 proto3 any 替换 proto2 扩展?
how to replace proto2 extension with proto3 any when extend different number of field?
我正在尝试学习 proto3,有一些关于 any
的问题。
我用extension比较多,如果我的原型是这样的:
message base {
extensions 1 to 100;
}
// a.proto
extend base {
optional int32 a = 1;
optional int32 b = 2;
}
// b.proto
extend base {
optional string c = 1;
optional string d = 2;
optional string e = 3;
optional string f = 4;
}
那么如何用 any 替换这些扩展名呢?我应该写成这样吗
import google/protobuf/any.proto
message base {
any a = 1;
any b = 2;
any c = 3;
any d = 4;
}
?
可能扩展了这么多 proto base.proto,我无法确定这些 proto 的最大扩展数。那我怎样才能用任何替换这些扩展?
如果我要在留言库里写1到100中的任意一个……哎呀,那也太惨了吧!
您通常会像这样构造它:
message base {
any submsg = 1;
}
// a.proto
message submsg_a {
optional int32 a = 1;
optional int32 b = 2;
}
// b.proto
message submsg_b {
optional string c = 1;
optional string d = 2;
optional string e = 3;
optional string f = 4;
}
然后在任意字段中输入 submsg_a
或 submsg_b
。
我正在尝试学习 proto3,有一些关于 any
的问题。
我用extension比较多,如果我的原型是这样的:
message base {
extensions 1 to 100;
}
// a.proto
extend base {
optional int32 a = 1;
optional int32 b = 2;
}
// b.proto
extend base {
optional string c = 1;
optional string d = 2;
optional string e = 3;
optional string f = 4;
}
那么如何用 any 替换这些扩展名呢?我应该写成这样吗
import google/protobuf/any.proto
message base {
any a = 1;
any b = 2;
any c = 3;
any d = 4;
}
?
可能扩展了这么多 proto base.proto,我无法确定这些 proto 的最大扩展数。那我怎样才能用任何替换这些扩展?
如果我要在留言库里写1到100中的任意一个……哎呀,那也太惨了吧!
您通常会像这样构造它:
message base {
any submsg = 1;
}
// a.proto
message submsg_a {
optional int32 a = 1;
optional int32 b = 2;
}
// b.proto
message submsg_b {
optional string c = 1;
optional string d = 2;
optional string e = 3;
optional string f = 4;
}
然后在任意字段中输入 submsg_a
或 submsg_b
。