主頁 > 知識(shí)庫 > go嵌套匿名結(jié)構(gòu)體的初始化詳解

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

熱門標(biāo)簽:杭州人工智能電銷機(jī)器人費(fèi)用 官渡電銷外呼管理系統(tǒng)怎么收費(fèi) 地圖區(qū)域圖標(biāo)注后導(dǎo)出 谷歌美發(fā)店地圖標(biāo)注 江蘇呼叫中心外呼系統(tǒng)有效果嗎 貴州電話智能外呼系統(tǒng) 400開頭電話怎樣申請(qǐng) 赤峰電銷 利用地圖標(biāo)注位置

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 直接初始化的時(shí)候是需要給出它的結(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
  }
}

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

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"`
  }
}

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

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

這樣就沒問題了~

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

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

您可能感興趣的文章:
  • 在django-xadmin中APScheduler的啟動(dòng)初始化實(shí)例
  • mongodb初始化并使用node.js實(shí)現(xiàn)mongodb操作封裝方法
  • django初始化數(shù)據(jù)庫的實(shí)例
  • Go語言創(chuàng)建、初始化數(shù)組的常見方式匯總
  • go語言的初始化順序,包,變量,init詳解

標(biāo)簽:松原 鷹潭 河池 宜春 黔西 保定 武漢 泰安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go嵌套匿名結(jié)構(gòu)體的初始化詳解》,本文關(guān)鍵詞  嵌套,匿名,結(jié)構(gòu),體,的,初始化,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《go嵌套匿名結(jié)構(gòu)體的初始化詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于go嵌套匿名結(jié)構(gòu)體的初始化詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章