首頁 > 後端開發 > Golang > 如何使用文字語法在 Go 中正確初始化巢狀結構?

如何使用文字語法在 Go 中正確初始化巢狀結構?

DDD
發布: 2024-12-21 06:24:21
原創
825 人瀏覽過

How to Properly Initialize Nested Structs in Go Using Literal Syntax?

用文字語法初始化巢狀結構

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板