首頁 > 後端開發 > Golang > 如何使用複合文字有效地初始化 Go 中的嵌入式結構?

如何使用複合文字有效地初始化 Go 中的嵌入式結構?

Barbara Streisand
發布: 2024-12-15 16:15:14
原創
573 人瀏覽過

How Can I Efficiently Initialize Embedded Structs in Go Using Composite Literals?

使用巢狀複合文字來初始化組合結構

在 Go 中,在嵌入其他結構時初始化組合結構可能會很棘手。 child := Child{ ID: id, a: a, b: b } 的原始語法可能會因無法直接初始化嵌入字段 ID 而導致錯誤。

克服此問題並維護封裝,使用嵌套複合文字:

child := Child{
    Base: Base{ID: id}, // Initialize the embedded struct
    a: a,
    b: b,
}
登入後複製

這種方法允許在單一表達式中初始化組合結構,同時透過巢狀嵌入結構來保留封裝初始化。

另一個解決方案,如問題中所暗示的,是使用像 NewFoo() 這樣的工廠方法。然而,嵌套複合文字提供了更簡潔和安全的替代方案。

複合文字的建議更改

Go 問題 9859 建議更改複合文字的語法以支援直接初始化嵌入欄位。此變更將啟用 child := Child{ ID: id, a: a, b: b } 的原始語法。

封裝注意事項

嵌入結構不是Go 中嚴格的封裝特性。雖然它允許間接存取嵌入字段,但它並沒有強制這樣做。程式碼除了使用child.ID之外,仍然可以直接存取child.Base.ID。因此,封裝的責任最終取決於應用程式的設計和使用。

以上是如何使用複合文字有效地初始化 Go 中的嵌入式結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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