日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Golang 語言 Struct 中字段的 Tag 怎么使用?

 [[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 字符串語法引用。

示例代碼:

 
 
 
 
  1. type User struct { 
  2.     Id uint64 `json:"id"` 
  3.     Name string `json:"name"` 

02操作 Struct 字段中的 Tag

在 Golang 語言中,可以使用標準庫 reflect 包操作 Struct 中的 Tag。在 reflect 包中,使用一個 StructField 表示 Struct 中的一個字段。

reflect 包源碼:

 
 
 
 
  1. type StructField struct { 
  2.     Name string 
  3.     PkgPath string 
  4.     Type      Type      // field type 
  5.     Tag       StructTag // field tag string 
  6.     Offset    uintptr   // offset within struct, in bytes 
  7.     Index     []int     // index sequence for Type.FieldByIndex 
  8.     Anonymous bool      // is an embedded field 

閱讀上面這段代碼,可以看出 Tag 也是 Struct 中的一個字段的組成部分,Tag 的類型是 StructTag,實際上它是一個 string 類型的別名。

 
 
 
 
  1. type StructTag string 

StructTag 提供了 Get 方法 func (tag StructTag) Get(key string) string,可以通過給定參數(shù) key 獲取關聯(lián) value 的值。如果 Tag 中沒有該 key,Get 返回空字符串。

示例代碼:

 
 
 
 
  1. func GetTag () { 
  2.     u := User{} 
  3.     ut := reflect.TypeOf(u) 
  4.     for i := 0; i < ut.NumField(); i++ { 
  5.         fmt.Printf("字段:%s,標簽:%s\n", ut.Field(i).Name, ut.Field(i).Tag.Get("json")) 
  6.     } 

其實,標準庫 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