首頁 > 後端開發 > Golang > 主體

如何在 Go 中實現以介面作為返回類型的介面?

Susan Sarandon
發布: 2024-11-14 17:46:02
原創
973 人瀏覽過

How to Implement an Interface with an Interface as Return Type in Go?

克服在Go 中以介面​​作為返回類型實作介面的障礙

在Go 中,嘗試以介面實作介面時可能會遇到錯誤回傳類型也是一個接口。這個問題深入研究了這個問題,並提供了解決錯誤的解決方案。

提供的程式碼示範了具有方法 FB() 的介面 IA,該方法預計會返回介面 IB。然而,struct A 中 FB 的實作會傳回具體類型 *B 而不是 IB。

要修正此錯誤,只需將struct A 中FB 的回傳類型修改為IB 而不是*B:

func (a *A) FB() IB {
    return a.b
}
登入後複製

此變更可確保A 正確實作IA 介面並解決錯誤。

跨介面套件

該問題也詢問如何在單獨的套件中定義介面。這種方法在 Go 中是可行的,可讓您在不同的套件之間共用介面。但是,當實作位於不同的套件中時,需要在實作中使用完全限定的介面名稱。

例如,如果IA 和IB 定義在套件foo 中,並且實作位於套件bar 中, bar 套件中的聲明將是:

type IA interface {
    FB() foo.IB
}
登入後複製

而bar 中的實作將變為:

func (a *A) FB() foo.IB {
    return a.b
}
登入後複製

此調整確保FB 的回傳類型與IA介面中指定的預期類型匹配,無論定義該介面的套件為何。

以上是如何在 Go 中實現以介面作為返回類型的介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板