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

Golang 的 “omitempty” 關鍵字詳解

開發 前端
omitempty只是在把結構體轉換成json的過程中,「只會影響json轉換后的結果,并不是影響結構體本身」,所以結構體的任何屬性設置了omitempty之后,都不影響其正常使用。

?json和struct轉換簡單介紹

熟悉 Golang 的朋友對于 json 和 struct 之間的轉換一定不陌生,為了將代碼中的結構體與 json 數據解耦,通常我們會在結構體的 field 類型后加上解釋說明,注意:「結構體的屬性首字母必須大寫,否則json解析會不生效」。

type Person struct {
Name string `json:"json_key_name"`
Age int `json:"json_key_age"`
}

func main() {

Per := Person{
Name: "小飯",
Age: 18,
}

res, _ := json.Marshal(Per)
fmt.Println(string(res))
return
}
//輸出結果
{"json_key_name":"小飯","json_key_age":18}

結構體只初始化部分變量?

接下來我們看另外一種情況:

p := Person{
Name: "小飯",
}
res, _ := json.Marshal(p)
fmt.Println(string(res))

如果我們在結構體初始化的時候只初始化了其中一個字段Name,那么理論上來說返回的json應該是。

{"Name":"小飯"}

但是我們實際運行一下返回的結果卻是。

{"Name":"小飯","Age":0}

這明顯是不符合我們的預期的,因為Age字段是我們不需要的。

如何解決?

接下來就輪到咱們今天的主角登場了,解決方式很簡單,在后面加上「omitempty」即可。

type Person struct {
Name string
Age int `json:",omitempty"`
}
func main() {
p := Person{
Name: "小飯",
}
res, _ := json.Marshal(p)
fmt.Println(string(res))
}
//輸出結果
{"Name":"小飯"}

結構體的特殊情況?

我們再來看下面的這個例子:

type Person struct {
Name string
Age int
}

type Student struct {
Num int
Person Person `json:",omitempty"` //對結構體person使用了omitempty
}

func main() {
Stu := Student{
Num: 5,
}
res, _ := json.Marshal(Stu)
fmt.Println(string(res))
}

我們對結構體「Person定義了omitempty」,按理說我們在初始化的時候并「沒有初始化結構體的任何屬性」,所以轉換成json之后的打印結果應該是只有{"Num":5}的,但是我們實際運行之后發現打印的結果卻是。

{"Num":5,"Person":{"Name":"","Age":0}}

為什么「omitempty對于結構體類型不生效」了呢?「這是因為結構體(上面例子的Person)不知道空值是什么,GO只知道簡單結構體例如int,string,pointer 這種類型的空值」,為了不顯示我們沒有提供值的自定義結構體,我們可以使用「結構體指針」。

為什么用指針類型就可以解決這個問題?因為「指針是基本類型,Golang知道他的空值是啥」,所以就直接賦值為nil(指針類型的空值)。

type Person struct {
Name string
Age int
}

type Student struct {
Num int
Person *Person `json:",omitempty"` //如果想要omitempty生效,必須是指針類型
}

func main() {
Stu := Student{
Num: 5,
}
res, _ := json.Marshal(Stu)
fmt.Println(string(res))
}
//輸出結果
{"Num":5}

omitempty的一個大坑?

我們接下來還是看例子:

type Person struct {
Age int `json:",omitempty"`
}
func main() {
Per := Person{
Age: 0,
}
res, _ := json.Marshal(Per)
fmt.Println(string(res))
}

按照咱們的預期,應該給輸出。

{"Age":0}

對不對,但是咱們實際運行以后輸出的卻是。

{}

這明顯有問題啊,咱們需要的是輸出的json字段,是必須有age,而且值是0,現在什么都沒輸出明顯是有問題的。「因為Golang把0當成了零值,所以跟沒有賦值是一樣的」如果想解決這種問題一種方法是「使用int指針」,因為int指針的空值為nil,當我想輸出0的時候,我傳進去地址,地址肯定不是空值nil,這樣肯定會顯示出來0。

type Person struct {
Age *int `json:",omitempty"`
}

func main() {
age := 0
Per := Person{
Age: &age,
}
res, _ := json.Marshal(Per)
fmt.Println(string(res))
}

總結?

omitempty只是在把結構體轉換成json的過程中,「只會影響json轉換后的結果,并不是影響結構體本身」,所以結構體的任何屬性設置了omitempty之后,都不影響其正常使用。

omitempty的作用簡單來說就是在「結構體轉換json的過程中」,「把沒有賦值的結構體屬性不在json中輸出而已」。

omitempty只支持「簡單的數據類型」,對「結構體的數據類型是不生效」的,如果需要生效,只能用「結構體指針」。

omitempty分不清楚「0值,""值和未賦值」,「如果給某個屬性賦值0或者"",并且想輸出,只能用指針類型」。

責任編輯:武曉燕 來源: 程序員小飯
相關推薦

2021-02-01 13:10:07

Staticc語言UNIX系統

2009-09-02 09:24:03

C# this關鍵字

2013-01-30 10:12:14

Pythonyield

2009-09-28 11:34:49

Javascript

2011-06-14 13:26:27

volatile

2025-06-13 08:00:00

Java并發編程volatile

2021-07-27 07:31:16

單例模式關鍵字

2025-07-29 06:00:00

final關鍵字開發

2024-03-15 11:52:03

C++關鍵字編程

2010-02-05 15:51:06

C++ explici

2017-05-27 20:59:30

Java多線程synchronize

2023-03-09 07:38:58

static關鍵字狀態

2023-11-10 09:29:30

MySQLExplain

2024-01-15 10:41:31

C++關鍵字開發

2023-09-22 22:27:54

autoC++11

2022-02-17 08:31:38

C語言staic關鍵字

2025-01-09 10:30:40

2022-05-06 08:32:40

Pythonwith代碼

2024-03-15 15:12:27

關鍵字底層代碼

2022-01-04 16:35:42

C++Protected關鍵字
點贊
收藏

51CTO技術棧公眾號

无码人妻丰满熟妇区96| 动漫美女被爆操久久久| 久艹在线观看视频| 亚洲精品一区国产| 精品美女国产在线| 亚洲一区二区三区精品在线观看| 国产女人18毛片水真多| 日韩午夜av在线| 中文欧美日本在线资源| 最新国产精品自拍| 巨胸喷奶水www久久久 | 国产午夜精品理论片| xxxxxhd亚洲人hd| 欧美午夜影院一区| 国产日韩av网站| 成人综合影院| 高清国产一区二区| 国产精品自产拍在线观看中文| 91在线播放观看| 精品毛片免费观看| 亚洲成人999| 伊人网在线综合| 男人av在线播放| 亚洲精品欧美激情| 天堂va久久久噜噜噜久久va| 午夜在线视频免费| 国产精品一二一区| 国产精品久久久久久影视| 国产手机在线视频| 欧美激情自拍| 久久久久北条麻妃免费看| 亚洲一区二区自偷自拍| 欧美freesex8一10精品| 91精品国产乱| 老司机午夜性大片| 亚洲a∨精品一区二区三区导航| 亚洲午夜羞羞片| 国产激情片在线观看| √天堂资源地址在线官网| 久久综合色天天久久综合图片| 成人免费在线看片| 精品人妻无码一区二区色欲产成人| 日韩福利电影在线观看| 日韩免费在线看| www.日本精品| 国产欧美不卡| 69久久夜色精品国产69乱青草| 久久这里只有精品国产| 国产专区一区| 欧美激情一区二区久久久| 糖心vlog免费在线观看| 99热在线成人| 久久精品视频一| 久久99久久99精品免费看小说| 午夜激情久久| 久久久精品一区| 欧美日韩在线视频免费| 欧美全黄视频| 久久全球大尺度高清视频| 国产一级在线免费观看| 欧美日韩理论| 欧美人与性动交a欧美精品| 免费毛片在线播放免费| 国内在线观看一区二区三区| 久久久久久久久久av| 国产成人无码精品亚洲| 午夜亚洲激情| 国产精品久久久久久久久久99| 国产天堂第一区| 久久精品国产久精国产| 亚洲中国色老太| 三级小视频在线观看| xnxx国产精品| 亚洲无玛一区| 中文字幕中文字幕在线十八区 | 成人动漫一区二区三区| 九色一区二区| 国产69久久| 亚洲视频你懂的| 成人av在线播放观看| 51漫画成人app入口| 欧美性猛交xxxx富婆弯腰| 欧美精品性生活| 日韩欧美中文在线观看| 亚洲国产欧美日韩精品| 91麻豆精品国产91久久综合| 自拍视频亚洲| 日韩av电影免费观看高清| 一级黄色录像大片| av电影在线观看完整版一区二区| 日韩性感在线| 2018av在线| 欧美日韩一区成人| 亚洲成a人片在线www| 国产一区二区三区探花| 欧美激情在线观看视频| 综合久久中文字幕| 成人福利电影精品一区二区在线观看| 少妇免费毛片久久久久久久久| 中文字幕免费高清电视剧网站在线观看| 精品国产精品自拍| 爽爽爽在线观看| 自拍亚洲一区| 欧美激情精品久久久| 中文字幕在线网站| 91在线精品一区二区| 国产成年人在线观看| 丝袜诱惑一区二区| 日韩三级.com| 欧美aaa级片| 午夜在线观看免费一区| 97超碰人人模人人爽人人看| av免费在线一区二区三区| 亚洲成人高清在线| 性欧美在线视频| 欧美日韩国产在线观看网站| 国语自产偷拍精品视频偷| 国产又粗又黄又爽视频| 久久久久9999亚洲精品| 男女超爽视频免费播放| 久久免费精品| 精品国产一区二区三区四区在线观看 | 亚洲成a人在线观看| www.超碰97.com| 国产免费久久| 欧美最猛性xxxxx免费| 亚洲精品一区二区三区新线路| 国产精品私人影院| 日韩欧美xxxx| 蜜桃成人av| 午夜精品久久久久久99热软件| 国产极品久久久| 亚洲丝袜另类动漫二区| 校园春色 亚洲色图| 国产午夜一区| 国产99久久精品一区二区永久免费| 老司机aⅴ在线精品导航| 亚洲国产日韩欧美在线| 欧美亚洲在线观看| 亚洲国产精品久久久久久久 | 色婷婷亚洲一区二区三区| www.四虎精品| 亚洲视频日本| yellow视频在线观看一区二区| 久久精品视频免费看| 欧美日韩国产首页| 久久一级免费视频| 日韩成人dvd| 日韩亚洲一区在线播放| 日韩三区免费| 亚洲网在线观看| 国产精品无码一区| 国产精品沙发午睡系列990531| 蜜臀视频一区二区三区| 精品国产乱码| 国产精品视频网站| 欧美激情午夜| 欧美一区二区在线看| 欧美一区二区三区爽爽爽| 国产精品一区二区久久精品爱涩 | 9191国产精品| 懂色av懂色av粉嫩av| 国产成人综合亚洲网站| 亚洲精品无码国产| 特黄特色欧美大片| 国产成人一区二区三区| av中文字幕在线| 欧美日韩大陆一区二区| 久久久久亚洲av无码专区体验| 国产很黄免费观看久久| 成年女人18级毛片毛片免费| 精品在线网站观看| 热久久视久久精品18亚洲精品| av大全在线免费看| 日韩一区二区三区在线视频| 日本熟伦人妇xxxx| 久久久久久97三级| 国产探花在线看| 亚洲一级高清| 日产中文字幕在线精品一区| 欧美三级电影网址| 欧美国产高跟鞋裸体秀xxxhd| 五月婷中文字幕| 欧美私人免费视频| 欧美日韩在线国产| 久久久精品国产免大香伊 | 国产91国语对白在线| 国产精品久线观看视频| 久久久久国产免费| 日韩精品亚洲专区| 69精品丰满人妻无码视频a片| 牛牛精品成人免费视频| 国产精品一二三在线| 欧美hdxxx| 中文字幕久久亚洲| 亚洲毛片欧洲毛片国产一品色| 色国产综合视频| 免费三片在线播放| 中文字幕不卡三区| 亚洲精品激情视频| 老鸭窝一区二区久久精品| 日韩精品在线中文字幕| 日韩成人精品一区| 久久久久高清| 欧美片网站免费| 国产国语videosex另类| 国产99re66在线视频| 中文字幕精品在线| 三级在线电影| 欧美成人女星排名| 在线观看毛片av| 欧美日韩在线视频观看| 黄色一级视频免费观看| 国产精品无圣光一区二区| 97精品人妻一区二区三区蜜桃| 美腿丝袜在线亚洲一区| 亚洲中文字幕无码专区| 午夜精品偷拍| 一区二区冒白浆视频| 美女亚洲一区| 国产在线精品一区二区中文| 高清国产一区二区三区四区五区| 国产成人啪精品视频免费网| 大菠萝精品导航| 欧美老女人在线视频| 自拍视频在线网| 亚洲视频专区在线| 亚洲av成人精品毛片| 精品裸体舞一区二区三区| 国产又粗又猛又爽又黄的| 精品久久中文字幕久久av| 久久久久久久久久99| 亚洲欧美日韩中文播放 | 国产人妖伪娘一区91| 日韩电影免费观看高清完整版| 97国产精品久久| 高清电影在线观看免费| 美日韩在线视频| mm1313亚洲国产精品美女| 久久精品国产亚洲精品| 日本美女在线中文版| 色偷偷亚洲男人天堂| 成人精品福利| 中文字幕9999| 日本不卡不卡| xvideos亚洲人网站| 黄色网址在线免费| 久久精品国产69国产精品亚洲| 午夜激情视频在线观看| 日韩在线精品视频| 欧美三级理伦电影| 久久久成人精品| 成人毛片av在线| 欧美另类69精品久久久久9999| 搞黄网站在线观看| 欧美日本在线视频中文字字幕| 1区2区在线观看| 欧美激情奇米色| av影院在线免费观看| 2019中文字幕在线观看| 极品美女一区| 国产精品视频男人的天堂| 六九午夜精品视频| 亚洲一区二区少妇| 成人h动漫免费观看网站| 好吊色欧美一区二区三区四区| 日韩精选在线| 视频在线99re| 中文字幕免费一区二区三区| 免费看欧美黑人毛片| 亚洲综合欧美| 日韩精品你懂的| 国产精品一区一区三区| 亚洲精品第二页| 国产亚洲精品中文字幕| 男女全黄做爰文章| 一区二区久久久久| 久久久久99精品成人片我成大片| 欧洲亚洲精品在线| 国产91视频在线| 亚洲欧美国产一区二区三区| 欧美成人三区| 91精品国产91久久久久| 精品欧美日韩精品| www.久久爱.cn| 久久91成人| 草草草视频在线观看| 香蕉av777xxx色综合一区| 一区二区三区韩国| 成人午夜碰碰视频| 国产综合精品久久久久成人av| 亚洲欧美日韩电影| 久久青青草视频| 555夜色666亚洲国产免| 亚洲日本国产精品| 久久伊人精品一区二区三区| 少妇视频在线观看| 亚洲aa中文字幕| 国内精品久久久久久99蜜桃| 国产激情片在线观看| 日本人妖一区二区| 精品影片一区二区入口| 国产精品久久久久一区二区三区| 日本亚洲欧美在线| 欧美日韩极品在线观看一区| 色噜噜一区二区三区| 久久久精品日本| 777午夜精品电影免费看| 国产一区二区三区无遮挡| 91精品国产成人观看| 日本在线视频www| 国产91综合网| 黄色录像二级片| 欧美自拍丝袜亚洲| 午夜小视频在线播放| 欧美黄色成人网| avtt久久| 四虎永久在线精品免费一区二区| 国产精品女主播一区二区三区| 欧美激情第四页| 中文字幕一区在线观看| 精品一区二三区| 亚洲精品中文字幕av| www中文字幕在线观看| 亚洲伊人第一页| 国产精品99一区二区三| 日本免费观看网站| 久久伊人蜜桃av一区二区| 国产在线视频99| 欧美成人精精品一区二区频| 污污网站在线看| 亚洲在线第一页| 欧美阿v一级看视频| 韩国一区二区在线播放| 国产精品国产三级国产aⅴ无密码| 波多野结衣小视频| 亚洲视频在线观看免费| 日本欧美一区| 亚洲精品一卡二卡三卡四卡| 日产欧产美韩系列久久99| 精品国产无码在线观看| 日韩欧美中文字幕在线观看| 天堂在线中文| 国自产精品手机在线观看视频| av男人一区| 国产日韩欧美精品在线观看| 成人高清视频在线| 国产无码精品一区二区| 精品国产乱码久久久久久图片 | 成人日韩欧美| 91精品中文在线| 欧美一区免费| 丰满人妻一区二区三区免费视频棣| 亚洲免费在线看| 国产sm主人调教女m视频| 久久久精品国产| 一区二区在线视频观看| 亚洲色成人www永久在线观看 | 国产精品一区二区在线观看 | 欧美一级视频在线观看| 国产91精品对白在线播放| 日本成人中文字幕在线| 欧美国产一区二区| 中文字幕在线网址| 欧美裸身视频免费观看| 国产伦精品一区二区三区免费优势| 黄色大片中文字幕| 2024国产精品| 亚洲影院一区二区三区| 久久99国产综合精品女同| 久久资源综合| 天天影视综合色| 日韩美女视频一区二区| 黑人操亚洲女人| 国产suv精品一区二区| 日韩精品免费| 无码人妻一区二区三区一| 黑人巨大精品欧美一区二区一视频 | 午夜久久久久久噜噜噜噜| 91av免费观看91av精品在线| 成人羞羞动漫| 人妻av一区二区三区| 色老头久久综合| 在线免费观看污| 欧美成人dvd在线视频| 麻豆91精品视频| 国产在线成人精品午夜| 在线播放国产一区中文字幕剧情欧美| 国产精品亚洲欧美一级在线| 欧美啪啪免费视频| 国产精品欧美一区二区三区| 黄色av网站免费在线观看| 国产精品久久久久9999| 国产在线日韩| 老司机福利在线观看| 亚洲激情视频在线| 伊人国产精品| 情侣黄网站免费看| 亚洲一区在线观看视频| 成人亚洲综合天堂|