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

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

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

 [[410625]]

01介紹

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

其中,每個(gè) key 都是一個(gè)非空字符串,由除空格 (U+0020 ' ')、引號(hào) (U+0022 '"') 和冒號(hào) (U+003A ':') 以外的非控制字符組成;每個(gè) value 都使用 U+0022 '"' 字符和 Go 字符串語法引用。

示例代碼:

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

02操作 Struct 字段中的 Tag

在 Golang 語言中,可以使用標(biāo)準(zhǔn)庫(kù) reflect 包操作 Struct 中的 Tag。在 reflect 包中,使用一個(gè) StructField 表示 Struct 中的一個(gè)字段。

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 中的一個(gè)字段的組成部分,Tag 的類型是 StructTag,實(shí)際上它是一個(gè) string 類型的別名。

  1. type StructTag string 

StructTag 提供了 Get 方法 func (tag StructTag) Get(key string) string,可以通過給定參數(shù) key 獲取關(guān)聯(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,標(biāo)簽:%s\n", ut.Field(i).Name, ut.Field(i).Tag.Get("json")) 
  6.     } 

其實(shí),標(biāo)準(zhǔn)庫(kù) json 包轉(zhuǎn)換 struct 為 JSON 字符串也是使用的類似的方法。

03總結(jié)

本文我們介紹了 Struct 字段中的 Tag 是什么,同時(shí)介紹了如何使用標(biāo)準(zhǔn)庫(kù) reflect 包操作 Struct 字段中的 Tag,實(shí)際上 Tag 只是一個(gè)字符串,reflect 包可以通過 Tag 作為參考條件,操作 Struct 字段。關(guān)于 reflect 包的更多介紹,感興趣的讀者可以翻閱之前的文章。

本文轉(zhuǎn)載自微信公眾號(hào)「Golang語言開發(fā)?!?,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Golang語言開發(fā)棧公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: Golang語言開發(fā)棧
相關(guān)推薦

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指針函數(shù)

2022-01-09 23:04:19

語言打印結(jié)構(gòu)體

2021-01-29 08:56:13

Golang標(biāo)準(zhǔn)庫(kù)函數(shù)

2021-06-09 23:36:46

Golang語言版本

2021-04-28 09:02:48

Golang語言Context

2021-10-10 23:02:49

Golang語言代碼

2023-03-06 08:01:25

structGo語言

2021-12-13 01:24:14

語言Golang panic

2021-06-29 23:40:19

Golang語言并發(fā)

2022-01-04 23:13:57

語言PanicGolang

2021-11-08 23:09:07

Go排序數(shù)據(jù)

2021-07-26 11:19:43

微服務(wù)開發(fā)技術(shù)

2021-10-31 23:01:50

語言拼接字符串

2023-11-05 12:20:10

匿名函數(shù)Golang

2022-02-07 23:07:19

Golang語言Modules

2021-11-28 23:06:30

語言編程接口

2009-06-26 10:19:00

Clob字段Hibernate
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜精品一区 | 免费观看视频www | 可以在线看的黄色网址 | 日本中文字幕一区 | 精品九九久久 | 亚洲不卡在线观看 | 亚洲一区二区三区四区五区午夜 | 久久精品久久久久久 | 国产成人在线视频 | 国产成人在线播放 | 日本久久久一区二区三区 | 国产日韩精品在线 | 欧美在线小视频 | 国产美女h视频 | 日韩影院一区 | 欧美aⅴ | 久久免费看| 国产乱码精品一区二区三区五月婷 | 亚洲第一色站 | 亚洲精品www. | 天天草av | 日韩成人在线一区 | 国产成人精品久久二区二区 | 91色网站| 伊人电影院av | 国产精品影视在线观看 | 日韩在线视频一区二区三区 | 欧美一区| 亚洲免费成人av | 中文字幕一区在线观看视频 | 伊人热久久 | 免费在线h视频 | 中文在线亚洲 | 在线观看中文字幕 | 99久久影院 | 欧美日韩高清免费 | 亚洲精品二三区 | 一级片网址 | 91原创视频| 欧美日韩亚洲三区 | 中文字幕国产一区 |