Proto3 如何处理双维数组?
proto3双维数组转换map的解决方案
proto3不支持多维数组。但其well-known types中的value、listvalue、struct支持任意json。多维数组可以用嵌套的listvalue实现,但数组结构无法在proto文件中体现。
在给出的示例中,viper可能无法自动处理以下结构:
type configreply_array2d struct { innerarray []*configreply_toolitem `protobuf:"bytes,1,rep,name=inner_array,json=innerarray,proto3" json:"inner_array,omitempty"` }
因为proto3没有多维数组类型,innerarray错误地被转换成了map。
解决方案是使用well-known types:
message Array2D { ValueArray value_array = 1; }
其中,valuearray是一个任意json数组的proto表示。在go代码中,valuearray会被转换为[]interface{}类型。你可以自己遍历和处理这个数组。
需要注意的是,使用well-known types后,proto文件中tool_item message的结构将丢失。
以上就是Proto3 如何处理双维数组?的详细内容,更多请关注硕下网其它相关文章!