最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

omitempty在go中的使用方式

 更新時(shí)間:2024年09月17日 09:31:11   作者:濤歌依舊  
在Go語言編程中,`omitempty`標(biāo)記用于JSON編解碼過程中控制字段是否被包含,當(dāng)結(jié)構(gòu)體字段標(biāo)記為`omitempty`且字段值為空時(shí),該字段不會出現(xiàn)在生成的JSON中,有助于優(yōu)化JSON結(jié)構(gòu)和減小數(shù)據(jù)體積,通過具體示例解釋了`omitempty`的工作機(jī)制和實(shí)際效果

omitempty在go中的使用

直接上代碼:

package main
 
import (
    "encoding/json"
    "fmt"
)
 
type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
    Addr string `json:"addr,omitempty"`
}
 
func main() {
    p1 := Person{
        Name: "taoge",
        Age:  30,
    }
 
    data, err := json.Marshal(p1)
    if err != nil {
        panic(err)
    }
 
    fmt.Printf("%s\n", data)
    fmt.Println(p1.Name, p1.Age, p1.Addr)
 
    p2 := Person{
        Name: "Cang Laoshi",
        Age:  18,
        Addr: "Japan",
    }
 
    data2, err := json.Marshal(p2)
    if err != nil {
        panic(err)
    }
 
    fmt.Printf("%s\n", data2)
    
    fmt.Println(p2.Name, p2.Age, p2.Addr)
}

結(jié)果:

{"name":"taoge","age":30}
taoge 30 
{"name":"Cang Laoshi","age":18,"addr":"Japan"}
Cang Laoshi 18 Japan

可以看到,有了omitempty后,如果addr為空, 則生成的json中沒有addr字段。

可以去掉omitempty, 再試試。

go標(biāo)記omitempty的含義

"omitempty"是Go語言中的一個標(biāo)記,用于在編碼和解碼JSON數(shù)據(jù)時(shí)控制字段的行為。它可以應(yīng)用于結(jié)構(gòu)體字段的標(biāo)簽中。

當(dāng)字段被標(biāo)記為"`omitempty`"時(shí),它表示在編碼JSON數(shù)據(jù)時(shí),如果該字段的值為空值,即零值或空引用,則忽略該字段,不將其包含在生成的JSON中。換句話說,如果字段的值為零值或空引用,則不會在JSON中創(chuàng)建對應(yīng)的鍵值對。

這個特性對于減少生成的JSON大小、提高網(wǎng)絡(luò)傳輸效率以及使JSON數(shù)據(jù)更加簡潔和可讀是有用的。

以下是一個示例,展示了如何在Go語言的結(jié)構(gòu)體字段中使用"`omitempty`"標(biāo)記:

type Person struct {
    Name  string `json:"name"`
    Age   int    `json:"age,omitempty"`
    Email string `json:"email,omitempty"`
}

在上述示例中,`Age`和`Email`字段都被標(biāo)記為`omitempty`。當(dāng)將`Person`結(jié)構(gòu)體編碼為JSON時(shí),如果`Age`和`Email`字段的值為空值(例如,`Age`為0,`Email`為空字符串),則在生成的JSON中將不會包含這些字段。只有當(dāng)它們具有非空值時(shí),才會在JSON中創(chuàng)建對應(yīng)的鍵值對。

總之,`omitempty`是Go語言中用于在編碼和解碼JSON時(shí)控制字段行為的標(biāo)記,它指示在生成的JSON中忽略空值字段。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入理解Go語言中的結(jié)構(gòu)體

    深入理解Go語言中的結(jié)構(gòu)體

    本文主要介紹了深入理解Go語言中的結(jié)構(gòu)體,包括定義結(jié)構(gòu)體、聲明結(jié)構(gòu)體變量、使用結(jié)構(gòu)體、結(jié)構(gòu)體關(guān)聯(lián)函數(shù)、new、組合等,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • go中空接口的具體使用

    go中空接口的具體使用

    空接口是一種特殊的接口類型,它不包含任何方法,本文主要介紹了go中空接口的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • GO語言并發(fā)編程之互斥鎖、讀寫鎖詳解

    GO語言并發(fā)編程之互斥鎖、讀寫鎖詳解

    這篇文章主要介紹了GO語言并發(fā)編程之互斥鎖、讀寫鎖詳解,本文是GO并發(fā)編程實(shí)戰(zhàn)一書的樣章,詳細(xì)講解了互斥鎖、讀寫鎖,然后給出了一個完整示例,需要的朋友可以參考下
    2014-11-11
  • Go?模塊在下游服務(wù)抖動恢復(fù)后CPU占用無法恢復(fù)原因

    Go?模塊在下游服務(wù)抖動恢復(fù)后CPU占用無法恢復(fù)原因

    這篇文章主要為大家介紹了Go?模塊在下游服務(wù)抖動恢復(fù)后CPU占用無法恢復(fù)原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Go語言內(nèi)存泄漏場景分析與最佳實(shí)踐

    Go語言內(nèi)存泄漏場景分析與最佳實(shí)踐

    本文總結(jié)了Go語言中常見的內(nèi)存泄漏場景,并提供了解決方案和排查方法,通過合理使用資源、控制goroutine生命周期、避免全局變量濫用等措施,可以有效減少內(nèi)存泄漏,感興趣的小伙伴跟著小編一起來看看吧
    2025-04-04
  • Go語言中循環(huán)Loop的用法介紹

    Go語言中循環(huán)Loop的用法介紹

    這篇文章介紹了Go語言中循環(huán)Loop的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • GO 語言運(yùn)行環(huán)境的基礎(chǔ)知識

    GO 語言運(yùn)行環(huán)境的基礎(chǔ)知識

    這篇文章主要介紹了GO 語言運(yùn)行環(huán)境的基礎(chǔ)知識的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 基于golang的輕量級工作流框架Fastflow

    基于golang的輕量級工作流框架Fastflow

    這篇文章主要介紹了基于golang的輕量級工作流框架Fastflow,fastflow 執(zhí)行任務(wù)的過程會涉及到幾個概念:Dag, Task, Action, DagInstance,本文給大家分享完整流程,需要的朋友可以參考下
    2022-05-05
  • 關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

    關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

    這篇文章主要給大家介紹了關(guān)于Golang中range指針數(shù)據(jù)的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 一文詳解Go語言中方法的指針接收者與值接收者

    一文詳解Go語言中方法的指針接收者與值接收者

    在 Go 語言里,方法是一種特殊的函數(shù),它與特定的類型關(guān)聯(lián),方法可以使用值接收者或者指針接收者,理解這兩種接收者的區(qū)別和使用場景,對于編寫高效、正確的 Go 代碼至關(guān)重要,本文將深入剖析指針接收者和值接收者的特點(diǎn),需要的朋友可以參考下
    2025-06-06

最新評論

股票| 德保县| 临邑县| 景泰县| 仙桃市| 乐东| 永宁县| 阿巴嘎旗| 油尖旺区| 阿拉善右旗| 全椒县| 什邡市| 南雄市| 包头市| 甘谷县| 藁城市| 同江市| 前郭尔| 泊头市| 鄱阳县| 明水县| 平顺县| 台州市| 临猗县| 准格尔旗| 潢川县| 图木舒克市| 砚山县| 西充县| 崇左市| 亚东县| 邵阳市| 台山市| 乌什县| 军事| 南投市| 资讯 | 佛山市| 蛟河市| 阿图什市| 山西省|