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

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

DDD
DDD原創
2024-12-21 06:24:21920瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn