php小編魚仔為您介紹“go:除名稱、類型之外的部分的字段定義”。在Go語言中,除了字段的名稱和類型之外,還可以為字段定義其他屬性和標簽。通過為字段添加屬性,可以控制字段的可見性和訪問權限。而通過為字段添加標簽,可以為字段添加額外的元數據,用于描述字段的特性。這些字段定義的部分可以在結構體中使用,為程序的設計和實現提供了更多的靈活性和可擴展性。
問題內容
我看到這樣的結構定義:
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 和 Unmarshal 函數。
您的示例似乎與 github.com/segmentio/parquet 有關-go 包。它有一些簡短的有關包如何解釋結構標簽的文檔 .
特別是:
snappy 使用 Snappy 壓縮對列進行編碼
dict 使用 Parquet 啟用 Dict 編碼文件。
可選表示Parquet列是可選的。
list 表示應使用 parquet LIST 邏輯類型。






