2 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
Go 不為您所追求的提供任何支持:您的Test
方法的接收者是一個(gè)Bar
指針,并且無法判斷它是否被嵌入。
如果你真的想走這條路,一個(gè)選擇是添加一個(gè)interface{}
成員Bar
并要求將其設(shè)置為包含類型的類型。初始化這個(gè)成員可能是創(chuàng)建值的人的責(zé)任,或者可能需要調(diào)用者將值傳遞給某個(gè) ORM 方法來設(shè)置它。這不是特別漂亮,但它可能是你能做的最好的。
順便說一句,將 API 構(gòu)建為db.Save(user)
而不是真的那么糟糕user.Save()
嗎?前者提供了一種擴(kuò)展到多個(gè)數(shù)據(jù)庫的明顯方法,而后者似乎更可能依賴于全局狀態(tài)。

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
(如果我正確理解您的問題,)不,嵌入不是繼承。聽起來你真正想要的是一個(gè)界面
type Saver interface { Save() error}
然后相關(guān)方可以實(shí)施。
您可以擁有一個(gè)公共結(jié)構(gòu)base
或任何實(shí)現(xiàn)公共方法的結(jié)構(gòu),然后可以嵌入每個(gè)更高級(jí)別的結(jié)構(gòu)base
以允許它們共享實(shí)現(xiàn)。
- 2 回答
- 0 關(guān)注
- 232 瀏覽
添加回答
舉報(bào)