在結構中嵌入具有相同名稱的結構
問題重點是在單一結構中嵌入兩個具有相同名稱的結構。通常,嘗試這樣做會導致重複欄位錯誤,如以下程式碼片段所示:
type datastore struct { *sql.Store *file.Store }
鍵入別名作為解決方案
要避免此問題問題,建議的解決方案是使用類型別名。透過為嵌入結構之一指派替代名稱,Go 編譯器可以區分這兩個實例。考慮以下修改後的程式碼:
type SqlStore = sql.Store // this is a type alias type datastore struct { *SqlStore *file.Store }
在此場景中,SqlStore 充當原始 sql.Store 類型的別名。因此,資料儲存中的嵌入欄位現在區分為 *SqlStore 和 *file.Store,有效解決了重複欄位衝突。
類型別名的好處
與與傳統類型聲明相比,類型別名不會引入單獨的新類型。相反,它只是為現有類型創建一個備用名稱。因此,它保留了原始類型的行為和特徵。透過利用類型別名,開發人員可以避免修改底層實現,同時保持與外部程式碼的相容性。
替代選項
除了型別別名之外,還有幾種替代方法實現所需的功能:
以上是如何在 Go 結構體中嵌入具有相同名稱的結構體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!