用文字語法初始化巢狀結構
在 Go 中,使用文字語法初始化巢狀結構可能很棘手。當嘗試存取父結構體的欄位同時為嵌套結構體成員提供值時,會出現此問題。
例如,考慮以下結構:
type A struct { MemberA string } type B struct { A A MemberB string }
初始化結構體B 的實例時使用文字語法時,需要注意的是,匿名結構體A 僅在初始化期間以其類型名稱為人所知。它的成員和函數只有在實例存在後才會公開。
要初始化父結構體的MemberA 字段,必須提供A 的有效實例:
b := B{ A: A{MemberA: "test1"}, MemberB: "test2", }
編譯器錯誤"出現“unknown B field 'MemberA' in structliteral”,因為MemberA 字段仍然是匿名結構A 的一部分,並且尚未暴露給 B struct.
總之,要使用字面語法初始化嵌套結構體,在為嵌套結構體成員賦值時需要提供父結構體的有效實例,如上面更正的初始化代碼所示。
以上是如何使用文字語法在 Go 中正確初始化巢狀結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!