新聞中心
[[410625]]
01介紹
在 Golang 語言中,我們可以使用反單引號為 Struct 中的字段設置 Tag,通過 Tag 可以為 Struct 中的字段定義附加屬性。Tag 實際上就是一個字符串,只不過有特定的格式,也就是說 Tag 字符串必須由 key:"value"組成,key 必須是非空字符串,value 必須由雙引號引起來。

公司主營業(yè)務:成都網(wǎng)站建設、網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出梁子湖免費做網(wǎng)站回饋大家。
其中,每個 key 都是一個非空字符串,由除空格 (U+0020 ' ')、引號 (U+0022 '"') 和冒號 (U+003A ':') 以外的非控制字符組成;每個 value 都使用 U+0022 '"' 字符和 Go 字符串語法引用。
示例代碼:
- type User struct {
- Id uint64 `json:"id"`
- Name string `json:"name"`
- }
02操作 Struct 字段中的 Tag
在 Golang 語言中,可以使用標準庫 reflect 包操作 Struct 中的 Tag。在 reflect 包中,使用一個 StructField 表示 Struct 中的一個字段。
reflect 包源碼:
- type StructField struct {
- Name string
- PkgPath string
- Type Type // field type
- Tag StructTag // field tag string
- Offset uintptr // offset within struct, in bytes
- Index []int // index sequence for Type.FieldByIndex
- Anonymous bool // is an embedded field
- }
閱讀上面這段代碼,可以看出 Tag 也是 Struct 中的一個字段的組成部分,Tag 的類型是 StructTag,實際上它是一個 string 類型的別名。
- type StructTag string
StructTag 提供了 Get 方法 func (tag StructTag) Get(key string) string,可以通過給定參數(shù) key 獲取關聯(lián) value 的值。如果 Tag 中沒有該 key,Get 返回空字符串。
示例代碼:
- func GetTag () {
- u := User{}
- ut := reflect.TypeOf(u)
- for i := 0; i < ut.NumField(); i++ {
- fmt.Printf("字段:%s,標簽:%s\n", ut.Field(i).Name, ut.Field(i).Tag.Get("json"))
- }
- }
其實,標準庫 json 包轉換 struct 為 JSON 字符串也是使用的類似的方法。
03總結
本文我們介紹了 Struct 字段中的 Tag 是什么,同時介紹了如何使用標準庫 reflect 包操作 Struct 字段中的 Tag,實際上 Tag 只是一個字符串,reflect 包可以通過 Tag 作為參考條件,操作 Struct 字段。關于 reflect 包的更多介紹,感興趣的讀者可以翻閱之前的文章。
本文轉載自微信公眾號「Golang語言開發(fā)?!?,可以通過以下二維碼關注。轉載本文請聯(lián)系Golang語言開發(fā)棧公眾號。
本文名稱:Golang 語言 Struct 中字段的 Tag 怎么使用?
文章出自:http://www.dlmjj.cn/article/ccechgo.html


咨詢
建站咨詢
