欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go嵌套匿名結(jié)構(gòu)體的初始化詳解

 更新時間:2020年12月15日 15:07:14   作者:darkalliance  
這篇文章主要介紹了go嵌套匿名結(jié)構(gòu)體的初始化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

go匿名結(jié)構(gòu)體

嵌套匿名結(jié)構(gòu)體的 示例代碼片.

type debugConfig struct {
 MaxQueueDepth int      `json:"maxQueueDepth"`
 ListenerEntries string `json:"listenerEntries"`
 Listeners  string
 Logging   struct {
 Info  string `json:"info"`
 Protocol string `json:"protocol"`
 Errlog string `json:"error"`
 Debug string `json:"debug"`
 }
}

初始化方式一

上述嵌套匿名結(jié)構(gòu)體初始化賦值的示例代碼片

 user1 := &debugConfig {
 MaxQueueDepth: 100,
 ListenerEntries: "hello",
 Listeners: "world",
 Logging: struct {
 Info  string `json:"info"`
 Protocol string `json:"protocol"`
 Errlog string `json:"error"`
 Debug string `json:"debug"`
 }{
 Info:"good",
 Protocol: "story",
 Errlog: "shenqi",
 Debug: "shuma",
 },
 }

說明

匿名 struct 直接初始化的時候是需要給出它的結(jié)構(gòu)的。

初始化方式二

上述嵌套匿名結(jié)構(gòu)體初始化賦值的示例代碼片

 var user2 debugConfig
 user2.MaxQueueDepth = 100
 user2.ListenerEntries = "hello"
 user2.Listeners = "world"
 user2.Logging.Info = "good"
 user2.Logging.Protocol = "story"
 user2.Logging.Errlog = "shenqi"
 user2.Logging.Debug = "shuma"

說明

這種方式寫起來更清晰省事兒~

補(bǔ)充:golang 使用匿名結(jié)構(gòu)體的問題

golang允許使用匿名結(jié)構(gòu)體,形如

type Test struct {
  param1 struct {
    param2 string
  }
}

一般在使用的時候可以直接這樣初始化

a := Test{
 param1: struct{ param2 string }{param2: "test"},
}

或者

b := new(Test)

b.param1.param2 = "test"   

但今天遇到一種情況

匿名結(jié)構(gòu)體的成員上有tag聲明,形如

type Test struct {
  param1 struct {
    param2 string `json:"param2"`
  }
}

這時使用第一種初始化方式,始終報錯,說類型不匹配,查了很久,偶然情況下去掉了結(jié)構(gòu)體定義中的tag聲明,居然不報錯了,這時反應(yīng)過來,使用第一種初始化方式,必須保證跟定義完全一樣,包括tag聲明等

a := Test{
 param1: struct{ param2 string `json:"param2"` }{param2: "test"},
}

這樣就沒問題了~

最后覺得如果遇到這種匿名結(jié)構(gòu)體,還是使用第二種初始化方式簡潔方便。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 詳解Go語言中如何通過Goroutine實現(xiàn)高并發(fā)

    詳解Go語言中如何通過Goroutine實現(xiàn)高并發(fā)

    在Go語言中,并發(fā)編程是一個核心且強(qiáng)大的特性,Go語言通過goroutine和channel等機(jī)制,使得并發(fā)編程變得更加簡單和直觀,本文給大家介紹了Go語言中如何通過Goroutine快速實現(xiàn)高并發(fā),感興趣的小伙伴跟著小編一起來看看吧
    2024-10-10
  • Go語言基礎(chǔ)類型及常量用法示例詳解

    Go語言基礎(chǔ)類型及常量用法示例詳解

    這篇文章主要為大家介紹了Go語言基礎(chǔ)類型及常量的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 基于原生Go語言開發(fā)一個博客系統(tǒng)

    基于原生Go語言開發(fā)一個博客系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了如何基于原生Go語言開發(fā)一個簡單的博客系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • go語言使用scp的方法實例分析

    go語言使用scp的方法實例分析

    這篇文章主要介紹了go語言使用scp的方法,實例分析了go語言調(diào)用scp命令的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用

    詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用

    這篇文章將以 string 類型為中心,通過 strconv 標(biāo)準(zhǔn)庫,介紹其與其他基本數(shù)據(jù)類型相互轉(zhuǎn)換的函數(shù)。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-12-12
  • Go中使用gjson來操作JSON數(shù)據(jù)的實現(xiàn)

    Go中使用gjson來操作JSON數(shù)據(jù)的實現(xiàn)

    本文主要介紹了Go中使用gjson來操作JSON數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • golang利用函數(shù)閉包實現(xiàn)簡單的中間件

    golang利用函數(shù)閉包實現(xiàn)簡單的中間件

    中間件設(shè)計模式是一種常見的軟件設(shè)計模式,它在許多編程語言和框架中被廣泛應(yīng)用,這篇文章主要為大家介紹一下golang利用函數(shù)閉包實現(xiàn)一個簡單的中間件,感興趣的可以了解下
    2023-10-10
  • Golang讀寫Excel的方法教程

    Golang讀寫Excel的方法教程

    這篇文章主要給大家介紹了關(guān)于Golang讀寫Excel的方法教程,golang操作excel利用的是Excelize,Excelize是Golang編寫的一個用來操作 Office Excel 文檔類庫,基于微軟的Office OpenXML標(biāo)準(zhǔn),文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • golang中context使用小結(jié)

    golang中context使用小結(jié)

    本文主要介紹了golang中context使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Golang?Mutex錯過會后悔的重要知識點分享

    Golang?Mutex錯過會后悔的重要知識點分享

    互斥鎖?Mutex?是并發(fā)控制的一個基本手段,是為了避免并發(fā)競爭建立的并發(fā)控制機(jī)制,本文主要為大家整理了一些Mutex的相關(guān)知識點,希望對大家有所幫助
    2023-07-07

最新評論