我看到这样的结构定义:
type Resource struct { Attrs []Attribute `parquet:",list"` ServiceName string `parquet:",snappy,dict"` Cluster *string `parquet:",snappy,optional,dict"` .... }
我理解字段定义的前两部分(名称、类型)。但最后一部分是什么意思呢?喜欢
parquet:",snappy,dict"
反引号中的文本描述了可以通过反射访问的 Go 结构标记(请参阅 reflect.StructTag
了解详细信息)。
这些标签通常由编组/解组为不同格式的代码使用 - 通常描述字段应如何解码或编码。 encoding/json
的结构标记的使用对于 Marshal
和 < a href="https://pkg.go.dev/encoding/json#Unmarshal" rel="nofollow noreferrer">Unmarshal
函数。
您的示例似乎与 github.com/segmentio/parquet 有关-go
包。它有一些简短的有关包如何解释结构标签的文档 .
特别是:
snappy
使用 Snappy 压缩对列进行编码dict
使用 Parquet 启用 Dict 编码文件。可选
表示Parquet列是可选的。list
表示应使用 parquet LIST 逻辑类型。