我想在我的庫中提供一個可以“擴展”的方法的基本結構。此基礎結構的方法依賴于來自擴展結構的方法。這在 Go 中是不可能直接實現的,因為結構體方法只能訪問結構體自己的字段,而不是父結構體。重點是具有我不必在每個擴展類中重復的功能。我想出了這個模式,它工作得很好,但由于它的循環結構看起來很復雜。我從未在其他 Go 代碼中找到類似的東西。這是非常不走的嗎?我可以采取什么不同的方法?type MyInterface interface { SomeMethod(string) OtherMethod(string)}type Base struct{ B MyInterface}func (b *Base) SomeMethod(x string) { b.B.OtherMethod(x)}type Extender struct { Base}func (b *Extender) OtherMethod(x string) { // Do something...}func NewExtender() *Extender { e := Extender{} e.Base.B = &e return &e}
2 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
很抱歉讓您失望,但您問錯了問題。當我開始編寫 Go 代碼時,我遇到了類似的問題。
您不能簡單地將類層次結構轉換為 Go 代碼,至少不會得到令人滿意的結果。通常在 Go 中有一種非常優雅和簡單的方法來解決這些問題,但是要發現它們,您需要像以往那樣思考。
不幸的是,您的問題并沒有說明您要解決什么問題。您剛剛描述了您希望如何解決它。因此我有點不愿意給出一個籠統的答案,因為它不會導致慣用的 Go 代碼。我理解你是否對這個答案感到失望,但在我看來,這是你能得到的最有價值的答案:)
- 2 回答
- 0 關注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消