您好,登錄后才能下訂單哦!
使用go語言怎么初始化嵌套匿名結構體?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
go匿名結構體
嵌套匿名結構體的 示例代碼片.
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"` } }
初始化方式一
上述嵌套匿名結構體初始化賦值的示例代碼片
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 直接初始化的時候是需要給出它的結構的。
初始化方式二
上述嵌套匿名結構體初始化賦值的示例代碼片
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"
說明
這種方式寫起來更清晰省事兒~
補充:golang 使用匿名結構體的問題
golang允許使用匿名結構體,形如
type Test struct { param1 struct { param2 string } }
一般在使用的時候可以直接這樣初始化
a := Test{ param1: struct{ param2 string }{param2: "test"}, }
或者
b := new(Test)
b.param1.param2 = "test"
但今天遇到一種情況
匿名結構體的成員上有tag聲明,形如
type Test struct { param1 struct { param2 string `json:"param2"` } }
這時使用第一種初始化方式,始終報錯,說類型不匹配,查了很久,偶然情況下去掉了結構體定義中的tag聲明,居然不報錯了,這時反應過來,使用第一種初始化方式,必須保證跟定義完全一樣,包括tag聲明等
a := Test{ param1: struct{ param2 string `json:"param2"` }{param2: "test"}, }
關于使用go語言怎么初始化嵌套匿名結構體問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。