成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Golang 語言 Struct 中字段的 Tag 怎么使用?

開發 后端
在 Golang 語言中,我們可以使用反單引號為 Struct 中的字段設置 Tag,通過 Tag 可以為 Struct 中的字段定義附加屬性。

 [[410625]]

01介紹

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

其中,每個 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,可以通過給定參數 key 獲取關聯 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語言開發棧」,可以通過以下二維碼關注。轉載本文請聯系Golang語言開發棧公眾號。

 

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2023-06-09 08:16:09

GolangStruct Tag

2021-09-13 05:02:49

GogRPC語言

2021-06-07 23:19:44

Golang語言 Defer

2021-08-02 07:57:02

Struct指針函數

2022-01-09 23:04:19

語言打印結構體

2021-01-29 08:56:13

Golang標準庫函數

2021-06-09 23:36:46

Golang語言版本

2021-04-28 09:02:48

Golang語言Context

2023-03-06 08:01:25

structGo語言

2021-10-10 23:02:49

Golang語言代碼

2021-12-13 01:24:14

語言Golang panic

2021-06-29 23:40:19

Golang語言并發

2022-01-04 23:13:57

語言PanicGolang

2021-11-08 23:09:07

Go排序數據

2021-07-26 11:19:43

微服務開發技術

2023-11-05 12:20:10

匿名函數Golang

2021-10-31 23:01:50

語言拼接字符串

2021-11-28 23:06:30

語言編程接口

2022-02-07 23:07:19

Golang語言Modules

2009-06-26 10:19:00

Clob字段Hibernate
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲第一在线 | 91色在线 | 精品国产1区2区3区 一区二区手机在线 | 亚洲精品电影网在线观看 | 久久久久久久一区 | 久久伊人精品 | 99久久久无码国产精品 | 天堂成人国产精品一区 | 欧美一区二区三区在线视频 | 欧美片网站免费 | 国产精品99久久久久久久久久久久 | 81精品国产乱码久久久久久 | 国产亚洲网站 | 91久久精品视频 | 久久国内精品 | av一二三四 | 国产xxxx搡xxxxx搡麻豆 | 久草视频网站 | 91天堂| 国产伦精品一区二区三区四区视频 | 免费在线观看成年人视频 | 一级久久久久久 | 91精品在线播放 | 日韩视频区 | 午夜影视网 | 久久青青 | 亚洲一区二区网站 | 国产成人精品久久二区二区 | 欧美a级成人淫片免费看 | 91麻豆精品一区二区三区 | 99精品视频在线观看 | 精品网| 亚洲免费网址 | 黄色一级大片在线免费看产 | 亚洲福利在线观看 | 国产一级黄色网 | 日韩一区中文字幕 | 免费成人在线网站 | 久久精品亚洲精品国产欧美 | 欧美福利在线 | 成人在线免费视频 |