我有一个谷歌protobuf结构:
message ResourceProto{
optional int32 memory = 0;
optional int32 core = 1;
}
我有另一种结构:
message AnotherProto{
optional ResourceProto resource = 0 [default to ResourceProto(100,1)];
....
}
我知道如何将默认值设置为普通类型,如int
,String
,Bool
,但如何将默认值分配给自定义结构,语法是什么?比方说,将resource
中的AnotherProto
的默认值设置为memory = 100
和core = 1
?
答案 0 :(得分:2)
协议缓冲区不支持非基本类型字段的默认值。 不确定为什么到底,但我认为这是因为它在实践中很少需要并且难以实现:
any
类型的概念,Protobuf2不支持它。相反,它们将默认值表示为optional string default_value,并为值提供了一些依赖于实现的语法。那说,从根本上说,可以完成。例如,我已经在piqi中实现了对任意默认值的支持,并且它在OCaml和Erlang中运行良好。