介面方法傳回型別作為Go 中的介面
問題:
問題:type IA interface { FB() IB } type IB interface { Bar() string } type A struct { b *B } func (a *A) FB() *B { return a.b } type B struct{} func (b *B) Bar() string { return "Bar!" }
cannot use a (type *A) as type IA in function argument: *A does not implement IA (wrong type for FB method) have FB() *B want FB() IB
執行此程式碼會導致以下錯誤:
func (a *A) FB() IB { return a.b }
解決此問題, FB方法的傳回類型必須與IA介面中指定的類型相符。因此,需要進行以下更改:
透過此修改,程式碼將成功編譯,因為 FB 的回傳類型現在為 IB,如 IA 介面中所定義。import ( "foo" // Package containing IB interface ) // Implementation in package bar func (a *A) FB() foo.IB { return a.b }
以上是為什麼我的Go介面方法回傳類型會導致編譯錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!