從不同的套件實現具有相同方法簽名的介面
在Go 中,使用相同方法簽名實現兩個不同的介面是不可行的不同的套餐。通常,每個介面類型都需要特定的實現,以確保類型安全。
但是,如果一個物件需要滿足具有相同名稱方法的多個接口,那麼為所有接口實現一致的邏輯可能會很困難。
案例範例:
考慮兩個套件A 和B,其中包含具有相同方法簽名的介面Doer:
package A type Doer interface { Do() string }
package B type Doer interface { Do() string }
問題:
在main 套件中,單一物件C 被設計為同時實作A.Doer 和B.Doer:
package main func (c C) Do() string { return "C now implements both A and B" }
但是,此實作在以下情況下會導致錯誤:呼叫B.FuncB(c),因為C 中實作的Do 方法僅適用於A.Doer。
解決方案:
使用Go 的嵌入功能,分離包裝類型可以建立:
DoerA
DoerA
以上是如何在 Go 中實現來自不同套件的具有相同方法簽名的介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!