精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

盤點一下結構體標簽在 Go 中的應用

開發 后端
掌握了Go語言的朋友們應該都知道,在Go的結構體類型聲明里面,字段聲明后可以跟一個可選的字符串標簽。

[[432717]]

掌握了Go語言的朋友們應該都知道,在Go的結構體類型聲明里面,字段聲明后可以跟一個可選的字符串標簽。

  1. type User struct { 
  2.  
  3. Name string `json:"name"
  4.  

上面是一個標準的例子,Name字段聲明中指定了標簽json:"name" xml:"name" ,這個標簽值看著有點類似Java程序里給類屬性加的注解。

那么這些結構體標簽有什么用途呢,我們隨便寫管用嗎?我們平時工作中常用的結構體標簽有哪些呢?我們能不能自己定義結構體標簽?今天就帶大家掰扯清楚這些問題!

結構體標簽

Go語言允許我們通過結構體字段標簽給一個字段附加可以被反射獲取的”元信息“,正好我們上篇文章實戰演示Go反射的使用方法和應用場景中講了Go語言反射使用方法相關的內容,對反射不清楚的可以先去再復習一下。

通常情況下,結構體標簽被用于提供結構體字段如何被編碼為或者解碼自另外一種格式的轉換信息(或者是以何種形式被保存至/獲取自數據庫)。不過,你也可以用它存儲任何你想要設置的”元信息“,供其他包或者自己使用。

使用規范

結構體標簽在使用上通常是遵守下面三個規范。

結構體標簽字符串的值是一個由空格分隔的 key:"value" 對列表,例如:

  1. type User struct { 
  2.     Name string `json:"name" xml:"name"

鍵,通常表示后面跟的“值”是被哪個包使用的,例如json這個鍵會被encoding/json包處理使用。如果要在“鍵”對應的“值”中傳遞多個信息,通常通過用逗號(',')分隔來指定,例如

  1. Name string `json:"name,omitempty"

按照慣例,如果一個字段的結構體標簽里某個鍵的“值”被設置成了的破折號 ('-'),那么就意味著告訴處理該結構體標簽鍵值的進程排除該字段。例如,把一個字段的標簽設置成下面這樣

  1. Name string `json:"-"

就以為進行JSON編碼/解碼時忽略Name這個字段。

怎么獲取到結構體標簽

從一開始我們就說結構體標簽是給反射準備的,那么怎么在Go程序里用反射獲得到字段的結構體標簽呢?看了我們上一篇文章的同學,應該會知道,結構體字段類型相關的信息,在反射的世界里使用reflect.StructFiled這個類型表示的。

  1. type StructField struct { 
  2.  Name string 
  3.  Type      Type      // field type 
  4.  Tag       StructTag // field tag string 
  5.   ...... 

如上所示,其中包含的Tag字段即代表了字段聲明中的結構體標簽信息。讓我們通過自定義結構體標簽的例子來演示一下怎么使用它在反射里讀取到標簽里的信息。

用反射獲取到自定義的結構體標簽

使用反射reflect包訪問結構體字段的標簽值,我們需要先獲取到結構體的類型信息Type,然后使用Type.Field(i int) 或 Type.FieldByName(name string),方法查詢字段信息,這兩個方法都會返回一個StructField類型的值,上面我們也說了它在反射的世界里用于描述一個結構體字段;而StructField.Tag 是一個StructTag 類型的值,它描述了字段的標簽。

上面我們談到了結構體標簽的使用規范,如果遵循規范給字段設置了標簽后,就可以使用StructTag的Get方法解析標簽的值并返回你指定的鍵的“值”。

  1. func (tag StructTag) Get(key string) string 

為了方便判斷一個給定的key是否存在與標簽中,StructTag還提供了一個Lookup方法

  1. func (tag StructTag) Lookup(key string) (value string, ok bool) 

跟Get方法不同的是,Lookup會通過返回的ok值告知給定key是否存在與標簽中。

下面通過一個例子,演示下獲取我們自定義標簽的過程。

  1. package main 
  2.  
  3. import ( 
  4.  "fmt" 
  5.  "reflect" 
  6.  
  7. type User struct { 
  8.  Name  string `mytag:"MyName"
  9.  Email string `mytag:"MyEmail"
  10.  
  11.  
  12.  
  13. func main() { 
  14.  u := User{"Bob""bob@mycompany.com"
  15.  t := reflect.TypeOf(u) 
  16.  
  17.  for i := 0; i < t.NumField(); i++ { 
  18.   field := t.Field(i) 
  19.   fmt.Printf("Field: User.%s\n", field.Name
  20.   fmt.Printf("\tWhole tag value : %s\n", field.Tag) 
  21.   fmt.Printf("\tValue of 'mytag': %s\n", field.Tag.Get("mytag")) 
  22.  } 

上面的程序會輸出

  1. Field: User.Name 
  2.         Whole tag value : mytag:"MyName" 
  3.         Value of 'mytag': MyName 
  4. Field: User.Email 
  5.         Whole tag value : mytag:"MyEmail" 
  6.         Value of 'mytag': MyEmail 

常用的結構體標簽鍵

常用的結構體標簽Key,指的是那些被一些常用的開源包聲明使用的結構體標簽鍵。在這里總結了一些,都是一些我們平時會用到的包,它們是:

  • json: 由encoding/json 包使用,詳見json.Marshal()的使用方法和實現邏輯。
  • xml : 由encoding/xml包使用,詳見xml.Marshal()。
  • bson: 由gobson包,和mongo-go包使用。
  • protobuf: 由github.com/golang/protobuf/proto 使用,在包文檔中有詳細說明。
  • yaml: 由gopkg.in/yaml.v2 包使用,詳見yaml.Marshal()。
  • gorm: 由gorm.io/gorm包使用,示例可以在GORM的文檔中找到。

當然這里列的就是最常用的幾個庫他們提供給我們使用的結構體標簽,歡迎大伙踴躍留言,補充一些自己平時用過的庫提供給開發者使用的結構體標簽。

總結

 

這篇文章算是我們上一篇講Go反射的一個實踐方向的延伸介紹,如果你也想在自己的包里提供一些結構體標簽鍵,讓自己的包更易用些,除了看咱們這篇文章外,還可以去看看上面咱們介紹的幾個類庫,看它們的源碼里是怎么應用的,現學現用!

 

責任編輯:武曉燕 來源: 網管叨bi叨
相關推薦

2009-07-10 21:14:53

綜合布線標簽

2021-12-20 07:59:07

Go語言結構體

2023-06-09 08:16:09

GolangStruct Tag

2024-10-16 09:57:52

空結構體map屬性

2023-11-21 08:03:43

語言架構偏移量

2020-12-02 09:10:22

Go結構數據類型

2021-04-20 09:00:48

Go 語言結構體type

2019-05-31 08:52:53

存儲技術容器

2023-07-29 15:03:29

2021-12-21 08:51:13

Go數據Model

2021-05-31 06:00:55

Python 3.4枚舉開發

2022-11-28 11:45:30

Go應用場景

2021-11-02 12:19:18

Go函數結構

2012-07-22 15:49:25

Java

2020-11-23 08:54:14

Go語言結構體

2020-11-26 06:40:24

Go語言基礎

2020-11-30 06:17:03

Go語言

2020-12-02 08:45:36

Go語言

2021-03-19 08:16:03

數據庫

2009-08-13 14:24:44

C#結構體構造函數
點贊
收藏

51CTO技術棧公眾號

波多野结衣乳巨码无在线| 2021久久精品国产99国产精品| 黄大色黄女片18第一次| 久久久久久国产精品免费无遮挡| 国产精品一区二区久久精品爱涩 | 性一交一黄一片| 擼擼色在线看观看免费| 欧美国产日本韩| 91久久国产自产拍夜夜嗨| 奇米影视第四色777| 日本精品黄色| 精品久久国产97色综合| 人人爽人人av| 成人影音在线| 亚洲欧洲av在线| 久久av一区二区| 97精品人妻一区二区三区在线| 亚洲裸体俱乐部裸体舞表演av| 欧美亚洲视频在线看网址| 菠萝蜜视频在线观看入口| 天堂成人在线观看| 精品一区精品二区高清| 97视频在线观看免费| 美国美女黄色片| 大奶在线精品| 欧美日韩成人高清| 少妇人妻无码专区视频| 日韩成人影视| 91美女片黄在线观看| 成人精品视频在线| 国产成人无码一区二区在线播放| 女生裸体视频一区二区三区| 亚洲人成电影在线播放| 久草视频福利在线| 在线观看亚洲精品福利片| 欧美日韩在线观看视频| 黄色特一级视频| 在线免费观看黄色网址| 91老司机福利 在线| 色是在线视频| 国产一区二区伦理| 国产精品av免费在线观看| 久久精品国产亚洲av无码娇色 | 日本一区二区三区四区高清视频| 日本精品一二区| 国产久卡久卡久卡久卡视频精品| 国产精品丝袜一区二区三区| 中文人妻av久久人妻18| 一本色道久久综合| 欧美精品久久一区二区| 久久久久亚洲AV成人| 99热国内精品| 日韩性生活视频| 91精品久久久久久久久久久久| 免费成人av| 亚洲精品视频免费在线观看| 艳妇乳肉亭妇荡乳av| 久久精品色综合| 亚洲国产精品小视频| 最新版天堂资源在线| 国产欧美啪啪| 日韩精品在线第一页| 日本黄色片在线播放| 麻豆视频一区| 亚洲欧美国产一本综合首页| 免费观看av网站| 国产aⅴ精品一区二区三区久久| 亚洲精品久久视频| 成人h动漫精品一区| 亚洲欧美成人vr| 亚洲人精选亚洲人成在线| a级大片在线观看| 狠狠色狠狠色综合婷婷tag| 国产午夜精品一区理论片飘花| 日韩黄色中文字幕| 999成人网| 欧美大片免费观看在线观看网站推荐| 精品无码人妻一区二区三区| 亚洲国产精品一区制服丝袜| 欧美在线免费看| 国产又粗又猛又黄视频| 麻豆91精品视频| 91精品国产一区二区三区动漫| 亚洲av色香蕉一区二区三区| 99精品视频一区| 日韩成人av电影在线| 91露出在线| 亚洲男人都懂的| a级免费在线观看| 亚洲欧洲高清| 欧美美女一区二区三区| 熟女人妻一区二区三区免费看| 日韩av中文字幕一区| 亚洲人成毛片在线播放| 久久精品黄色片| 亚洲久久在线| 国产精品视频大全| 亚洲AV无码一区二区三区少妇| 91视频www| 中文字幕一区二区三区四区五区人| 伊人222成人综合网| 欧美日韩在线免费| 中文av字幕在线观看| 久久porn| 色偷偷av一区二区三区| 亚洲一区欧美在线| 激情综合网av| 韩日午夜在线资源一区二区| 午夜激情视频在线观看| 亚洲国产中文字幕在线视频综合| www.国产区| 日韩中文一区二区| 国产亚洲精品久久久久动| 欧美日韩成人免费观看| 日韩精品三区四区| 国产欧美日韩综合精品二区| 性开放的欧美大片| 精品日韩美女的视频高清 | 国产69精品久久777的优势| 欧美日韩一区综合| 黄色美女视频在线观看| 欧美日韩一级片在线观看| 伊人网综合视频| 91精品国产91久久久久久黑人| 清纯唯美亚洲激情| 人人妻人人玩人人澡人人爽| 亚洲免费观看高清| 国产又黄又猛又粗又爽的视频| 动漫av一区| 久久天天躁日日躁| 中文字幕观看视频| 久久综合色鬼综合色| 国产av熟女一区二区三区| 四虎影视精品永久在线观看| 亚洲天堂av女优| 亚洲精品午夜国产va久久成人| 国产精品一区二区久久精品爱涩 | 黄色网页在线播放| 欧洲精品在线观看| 精品成人av一区二区三区| 亚洲片区在线| 国产精品加勒比| 亚洲综合影视| 日韩一区二区在线观看视频| 一起操在线播放| 久久91精品久久久久久秒播| 特级西西444www大精品视频| 国产综合色区在线观看| 亚洲色图25p| 无码人妻丰满熟妇区bbbbxxxx| 99国产精品久| 无码精品a∨在线观看中文| 999国产精品一区| 欧美激情精品久久久久久免费印度| 国产美女明星三级做爰| 亚洲免费在线观看| 红桃视频一区二区三区免费| 亚洲综合激情在线| 97超碰人人看人人| 日本片在线看| 亚洲成人精品av| 欧美三级韩国三级日本三斤在线观看| 成人av网站在线观看| www.射射射| 校园春色另类视频| 国产精品扒开腿做爽爽爽视频 | 久久精品人人做| 亚州精品一二三区| 日韩欧美午夜| 69堂成人精品视频免费| heyzo一区| 亚洲精品在线看| 中文字幕理论片| 国产精品二三区| 性折磨bdsm欧美激情另类| 亚洲精品男同| 少妇特黄a一区二区三区| 欧美成人毛片| 欧美国产日韩一区二区在线观看| 色资源在线观看| 欧美日韩在线免费视频| 久久中文免费视频| 99久久99久久精品免费观看| 日本三级免费观看| 天天射天天综合网| 国产精品国产一区二区| 忘忧草在线www成人影院| 久热精品视频在线观看一区| 欧美自拍偷拍一区二区| 色婷婷一区二区三区四区| av最新在线观看| 99久久777色| 肉色超薄丝袜脚交| 性色一区二区三区| 国产资源第一页| 国产精品一在线观看| 亚洲资源在线看| 日韩新的三级电影| 欧美日韩xxx| 国产精品一级伦理| 亚洲精品在线一区二区| 中文字幕日本人妻久久久免费| 一区二区三区 在线观看视频| 天天躁日日躁aaaxxⅹ| 国产一区二区三区免费播放| 能在线观看的av| 亚洲成av人片乱码色午夜| 蜜桃999成人看片在线观看| 97久久精品一区二区三区的观看方式| 97在线看福利| av片哪里在线观看| 伊人激情综合网| 涩涩视频在线观看免费| 欧美成人一区二区三区片免费 | 亚洲精品8mav| 亚洲精品国产setv| 风间由美一区二区三区| 亚洲欧洲二区| 国产精品毛片a∨一区二区三区|国| 黑人极品ⅴideos精品欧美棵| 中文字幕日韩欧美在线 | 精品视频中文字幕| 91福利在线观看视频| 一本久道中文字幕精品亚洲嫩| 老熟妇高潮一区二区三区| 91视频一区二区| 中国一级特黄录像播放| 黄色精品一二区| 成人在线看视频| 欧美影院一区| 天天综合狠狠精品| 欧美色图五月天| 亚洲xxx自由成熟| 国产第一亚洲| 日韩美女在线播放| 高清毛片在线观看| 欧美xxxx18国产| 天堂av资源在线观看| 色妞欧美日韩在线| 伦理片一区二区三区| 亚洲人免费视频| 无码精品一区二区三区在线| 欧美一级专区免费大片| 亚洲中文一区二区三区| 欧美三级韩国三级日本一级| 国产www在线| 午夜影院久久久| 五月婷婷中文字幕| 亚洲大片一区二区三区| 玖玖爱免费视频| 亚洲激情图片qvod| 杨钰莹一级淫片aaaaaa播放| 中文字幕第一页久久| 97超碰在线资源| 国产日产亚洲精品系列| 日韩人妻无码精品综合区| 暴力调教一区二区三区| 国产艳俗歌舞表演hd| 91在线一区二区| 2一3sex性hd| 国产精品66部| 伊人网综合视频| 99热国产精品| 久久无码人妻精品一区二区三区| 91久色porny| 亚洲天堂网一区二区| 91亚洲精品久久久蜜桃| 免费看黄色的视频| 久久精品人人爽人人爽| 亚洲色图 激情小说| 国产视频911| 人人澡人人澡人人看| 18欧美乱大交hd1984| 国产精品丝袜一区二区| 亚洲国产美女搞黄色| 日韩美女黄色片| 色综合视频在线观看| 一级黄色片在线播放| 91精品国产综合久久久久久漫画 | 国产精品第一页在线| 视频在线日韩| 国产噜噜噜噜噜久久久久久久久| 视频在线亚洲| 精品欧美日韩| 国产一区二区三区电影在线观看 | 天堂中文在线官网| 国产视频精品免费播放| 日本视频不卡| 欧美激情视频三区| 在线黄色的网站| 成人激情视频小说免费下载| 亚洲精品黑牛一区二区三区| 国产一区二区黄色| 久久综合电影| 日韩久久久久久久久久久久| 久久国产精品久久w女人spa| 国产xxxxhd| 91麻豆视频网站| 亚洲欧美日韩第一页| 五月婷婷激情综合网| 青青国产在线视频| 欧美一级免费观看| 色视频在线观看福利| 中文字幕av一区| 欧美激情午夜| 国产综合在线视频| 日韩av电影资源网| 成人激情直播| 黄色不卡一区| 99福利在线观看| 国产在线播放一区三区四| 久久久久成人精品无码中文字幕| 久久精品亚洲国产奇米99| 日本一级二级视频| 好吊成人免视频| 91女人18毛片水多国产| 亚洲欧美999| 欧美xxxx性xxxxx高清| 国产va免费精品高清在线| 久久99偷拍| 国产精品12p| 日韩一级网站| 人妻互换一二三区激情视频| 中文字幕欧美国产| 免费无遮挡无码永久在线观看视频| 欧美日韩一区视频| 少妇人妻精品一区二区三区| 在线视频亚洲欧美| 女海盗2成人h版中文字幕| 国产精品香蕉国产| 女人av一区| 黄色www网站| 国产一区二区三区国产| 国产又粗又黄又猛| 午夜精品久久久久久久蜜桃app| 亚洲AV无码一区二区三区少妇| 色综合伊人色综合网站| 高清不卡av| 欧美一区二区高清在线观看| 国产精品草草| 国产一区二区在线观看免费视频| 国产精品无人区| 波多野结衣av无码| 亚洲美腿欧美激情另类| 中文字幕在线直播| 久久五月天婷婷| 在线看片日韩| 国产三级国产精品| 天天爽夜夜爽夜夜爽精品视频| 亚洲精品一级片| 欧美日韩不卡合集视频| 久久久91麻豆精品国产一区| wwwjizzjizzcom| 国产成人小视频| 九九精品在线观看视频| 精品国产露脸精彩对白| 亚洲小说区图片区都市| 国产在线视频欧美| 亚洲一区二区三区| 69久久精品无码一区二区| 亚洲一区二区三区四区的| 国产高清第一页| 欧美美女操人视频| 免费成人蒂法| 日韩欧美一区二| 91亚洲精品久久久蜜桃网站 | 91免费福利视频| 久久久影院免费| 黄色手机在线视频| 亚洲欧美日韩中文播放| 99热这里只有精| 91国内精品久久| 亚洲动漫精品| 热久久精品国产| 18成人在线观看| 亚洲精品一级片| 日本91av在线播放| av影片在线一区| 国产亚洲视频一区| 亚洲电影在线播放| 欧洲成人一区二区三区| 2023亚洲男人天堂| 天天射综合网视频| 四虎成人免费视频| 欧美午夜精品一区| 里番在线观看网站| 99中文视频在线| 日韩中文字幕一区二区三区| 中文字幕伦理片| 欧美精品777| 欧亚av在线| 亚洲第一在线综合在线| 成人精品一区二区三区四区 | 在线观看免费成人| 欧美日韩欧美| 久久综合九色欧美狠狠| 美女脱光内衣内裤视频久久网站 | 国产精品精品国产一区二区| 麻豆精品国产传媒| 在线视频你懂得一区二区三区|