精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

h片在线免费观看| 久久久999久久久| 美女午夜精品| 欧美性色黄大片手机版| 亚洲午夜激情| 后进极品白嫩翘臀在线视频| 蜜桃视频一区| 欧美另类xxx| 一区二区三区久久久久| 亚洲三级av| 91成人免费电影| av中文字幕av| av女优在线| 99热国产精品| 91色中文字幕| 无码视频在线观看| 影音先锋国产精品| 爱福利视频一区| 国产夫妻性爱视频| 日本精品在线观看| 欧美亚洲精品一区| 久久这里只有精品18| 免费在线观看av| 久久久久久久久97黄色工厂| 91久久极品少妇xxxxⅹ软件| 一级久久久久久| 一级成人国产| 欧美精品久久久久久久久久| 日本美女黄色一级片| 亚洲最大在线| 亚洲精品第一页| 日本55丰满熟妇厨房伦| 欧美高清你懂的| 色婷婷激情久久| 草草久久久无码国产专区| 亚洲淫性视频| 国产精品每日更新在线播放网址| 欧美日韩精品免费观看视一区二区| 性色av蜜臀av| 国精产品一区一区三区mba视频| 日本一区二区三区在线播放 | 欧美激情一区在线| 欧美不卡在线一区二区三区| 天天操天天干天天| 成人av午夜电影| 成人欧美一区二区三区在线观看| 国产aⅴ爽av久久久久成人| 久久99精品久久只有精品| 国产精品99导航| 无码人妻av一区二区三区波多野| 国产欧美丝祙| 日韩av免费在线| 91porny九色| 肉色丝袜一区二区| 国产成人亚洲综合91| 中文字幕在线播| 日韩在线一区二区三区| 国产精品久久久久久久久久新婚 | 久久亚洲国产精品日日av夜夜| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 国产成人在线观看免费网站| 国产66精品久久久久999小说| www.99视频| 成人免费福利片| 国产在线精品一区二区三区》| 视频一区 中文字幕| 26uuu色噜噜精品一区二区| 久久精品五月婷婷| 国产高清在线看| 亚洲欧洲日韩女同| www.亚洲视频.com| 亚洲欧美一二三区| 999av小视频在线| 一区二区三区四区精品在线视频| 国产激情片在线观看| 暖暖在线中文免费日本| 亚洲成av人片| 日韩免费高清在线| 国产精品2区| 精品99999| 国产手机在线观看| 欧美电影免费观看高清| 欧美日本精品在线| 国产精品国产三级国产专区52| 久久久久国产精品一区二区 | 成年人深夜视频| 亚洲一二三四| 欧美日本免费一区二区三区| 亚洲美女精品视频| 久久最新网址| 欧美另类交人妖| 天干夜夜爽爽日日日日| 久久精品国产99久久6| 国产精品一区二区不卡视频| 久久视频www| 亚洲色图19p| 三上悠亚久久精品| 精品女同一区二区三区在线观看| 精品奇米国产一区二区三区| 精品人伦一区二区三电影| 小小影院久久| 日本不卡免费高清视频| 国产精品欧美久久久久天天影视| 99久久精品免费看国产| 亚洲成色www久久网站| 欧美人与禽性xxxxx杂性| 欧美亚洲综合另类| 黄色免费看视频| 羞羞答答成人影院www| 欧美在线视频免费观看| 亚洲成人中文字幕在线| 中文字幕在线不卡视频| 日本三级免费观看| 丁香一区二区| 蜜臀久久99精品久久久无需会员 | 欧美性videos| 亚洲国产高清在线| 免费av手机在线观看| 视频欧美精品| 国产亚洲精品久久久| 国产精品成人久久| 国产乱人伦偷精品视频免下载| 日韩高清国产精品| 黄视频免费在线看| 555www色欧美视频| 国精品人伦一区二区三区蜜桃| 久久久久久久尹人综合网亚洲| 97久久夜色精品国产九色 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲高清在线视频| www.成人黄色| 久久国产小视频| 国产精品成人国产乱一区| 少妇人妻一区二区| 亚洲午夜免费福利视频| 亚欧精品在线视频| 99视频精品全国免费| 国产精品久久久久一区二区| 精品无人乱码| 色婷婷综合久色| 国产成人无码一区二区在线观看| 亚洲一级二级| 国产精品免费一区二区| 欧美黑人猛交| 日韩三级免费观看| 久久久久亚洲av片无码| 久久国产成人午夜av影院| 亚洲高清视频一区| 人人精品久久| 日韩视频在线免费| 国产女同91疯狂高潮互磨| 国产精品每日更新| 亚洲第一天堂久久| 综合久久久久| 国产精品精品软件视频| av不卡高清| 亚洲精品大尺度| 中文字幕视频网| 久久久久99精品一区| 欧美日韩一区二区在线免费观看 | 国产三级在线免费观看| 亚洲伦理在线精品| 深夜福利网站在线观看| 欧美视频久久| 久久99精品久久久久久青青日本| 国产极品在线观看| 亚洲欧美日韩中文视频| 国产情侣免费视频| 亚洲视频一二三区| 91成人在线观看喷潮蘑菇| 最新国产乱人伦偷精品免费网站| 国产一区二区黄色| 亚洲优女在线| 这里精品视频免费| 99精品视频免费看| 精品福利视频导航| 永久免费av无码网站性色av| 狠狠色综合日日| 久久久久久免费看| 欧美日韩国产一区二区三区不卡| 国产精品视频一区二区三区四| 毛片在线不卡| 亚洲第一中文字幕在线观看| 国产免费a视频| 亚洲精品免费播放| av中文字幕免费观看| 黄色资源网久久资源365| 成人免费在线网| 国产精品自拍区| 91美女福利视频高清| 爱看av在线| 伊人伊成久久人综合网站| 国产高清精品软件丝瓜软件| 懂色av中文一区二区三区天美| ass极品国模人体欣赏| 成人免费视频播放| 欧美一级裸体视频| 精品999日本| 亚洲精品一区二区三区蜜桃久| 91综合久久爱com| 国产精品电影观看| 99爱在线视频| www.xxxx精品| 黄色在线网站| 亚洲成年人在线播放| 中文字幕理论片| 好吊成人免视频| 校园春色 亚洲| 国产欧美一区二区在线观看| 欧美图片自拍偷拍| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩福利在线| 一本到12不卡视频在线dvd| 欧洲精品久久| a√资源在线| 91啪九色porn原创视频在线观看| 潘金莲激情呻吟欲求不满视频| 美女视频一区免费观看| 一本久道高清无码视频| 羞羞色午夜精品一区二区三区| 日本免费一区二区三区| 精品成人自拍视频| 91传媒免费看| 97色婷婷成人综合在线观看| 国产福利成人在线| 涩涩视频在线播放| 久久久久国产视频| 中文字幕在线三区| 久久精视频免费在线久久完整在线看| 你懂的视频在线播放| 亚洲国产精彩中文乱码av| 国产高清免费观看| 欧美一区日本一区韩国一区| 中文字幕无码乱码人妻日韩精品| 欧美视频中文字幕在线| 国产特黄大片aaaa毛片| 亚洲亚洲人成综合网络| 九九免费精品视频| 最新久久zyz资源站| 国产真人真事毛片视频| 国产偷国产偷精品高清尤物| 欧美高清性xxxx| 91亚洲精品久久久蜜桃网站| v8888av| 91免费国产在线| 日本xxx在线播放| 久久久综合精品| 成年人网站免费在线观看| 99久久国产综合精品女不卡| 亚洲香蕉中文网| 99久久精品国产网站| 风间由美一二三区av片| 久久日韩精品一区二区五区| 国精产品一区一区三区免费视频| 白白色 亚洲乱淫| 疯狂揉花蒂控制高潮h| av电影一区二区| 久久无码人妻精品一区二区三区 | 日韩国产欧美一区| 欧美亚洲国产精品久久| 视频一区二区精品| 午夜免费一区| 国产精品videossex国产高清| 亚洲大胆av| 麻豆av免费在线| 久久超碰97中文字幕| 人妻激情偷乱视频一区二区三区| 成人黄色在线看| 精品久久久久久中文字幕人妻最新| 国产蜜臀av在线一区二区三区| 国产第一页浮力| 国产精品jk白丝蜜臀av小说| 国产精品看片资源| 国产精品一区免费在线| 超碰97在线资源| 校花撩起jk露出白色内裤国产精品| 日产国产精品精品a∨| 欧美电影《轻佻寡妇》| 日韩网站在线免费观看| 久久性天堂网| 日韩av福利在线观看| 北岛玲一区二区三区四区| 色综合99久久久无码国产精品| 最新不卡av在线| 日韩三级视频在线| 欧美午夜宅男影院| 亚洲精品综合久久| 一区二区三区精品99久久| 羞羞的视频在线观看| 日本成人激情视频| 国产精品一区二区美女视频免费看| 国产手机精品在线| 97视频精品| 欧美 日韩 国产 高清| 精品一区精品二区高清| 亚洲第九十七页| 亚洲免费观看在线视频| 国产农村妇女aaaaa视频| 制服丝袜av成人在线看| 青青草在线视频免费观看| 超薄丝袜一区二区| 日韩一级二级| 国产一区二区黄色| 亚洲最新色图| 精品亚洲一区二区三区四区| 白白色 亚洲乱淫| 久久国产精品国语对白| 欧美性做爰猛烈叫床潮| 亚洲男人第一天堂| 日韩一区在线视频| 成人va天堂| 蜜桃成人免费视频| 精品动漫av| 久久人人爽人人片| 亚洲欧美在线aaa| 中文字幕欧美在线观看| 亚洲免费av电影| 高潮在线视频| 国产三区精品| 好吊一区二区三区| 色哟哟免费视频| 国产精品精品国产色婷婷| 凹凸精品一区二区三区| 亚洲欧美日本精品| 亚洲日本天堂| 久久久久久欧美精品色一二三四| 激情欧美亚洲| 久久av一区二区三| 依依成人综合视频| 精品国产无码一区二区三区| 色偷偷88888欧美精品久久久| 毛片无码国产| 欧美久久久久久久| 乱码第一页成人| 久久久久久亚洲中文字幕无码| 欧美午夜性色大片在线观看| 人妻少妇精品无码专区久久| 久久免费视频观看| 超碰精品在线观看| 欧美日韩国产小视频| 国产深喉视频一区二区| www国产精品视频| 日本午夜精品久久久久| 中文字幕久久综合| 激情伊人五月天久久综合| 激情无码人妻又粗又大| 欧美日韩激情在线| 日本免费中文字幕在线| 成人在线视频网| 亚洲精品国产首次亮相| 欧美高清精品一区二区| 亚洲黄色av一区| 无码精品人妻一区二区三区影院| 97视频com| 精品免费在线| 亚洲欧美视频二区| 亚洲天堂网中文字| 亚洲第一精品网站| 国自产精品手机在线观看视频| 图片婷婷一区| 五月婷婷深爱五月| 中文字幕在线不卡国产视频| 精品人妻一区二区三区日产乱码| 午夜精品一区二区三区在线视频| 秋霞影视一区二区三区| 熟女人妇 成熟妇女系列视频| 国产精品婷婷午夜在线观看| 国产偷拍一区二区| 久久全球大尺度高清视频| 亚洲春色h网| 亚洲欧美偷拍另类| 亚洲制服丝袜一区| 三级做a全过程在线观看| 国产精品揄拍一区二区| 欧美黄在线观看| 中文乱码人妻一区二区三区视频| 色婷婷久久久综合中文字幕 | 国产精品久久久久aaaa| a天堂视频在线| 日本精品久久久| 欧美~级网站不卡| 右手影院亚洲欧美| 欧美一区在线视频| 欧美香蕉视频| 久久久天堂国产精品| 久久久久国产精品免费免费搜索| 99久久99久久久精品棕色圆| 992tv成人免费影院| 日韩欧美一区免费| 中文字幕第九页| 欧美日韩免费观看一区三区| 国产www视频在线观看| 日日骚一区二区网站| 丁香天五香天堂综合| 中文字幕在线播出| 91精品国产91久久| 真实国产乱子伦精品一区二区三区| 男生裸体视频网站| 精品欧美乱码久久久久久1区2区| 日韩和的一区二在线|