1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
除非您正在編寫接口優(yōu)先的應(yīng)用程序,否則通常最好在不聲明任何接口的情況下編寫具體實(shí)現(xiàn)。然后,該包的用戶可以聲明必要的接口。例如:
type Implementation struct {
...
}
func (i Implementation) FuncA() {...}
func (i Implementation) FuncB() {...}
如果需要實(shí)現(xiàn)的某個(gè)類型,則可以聲明:FuncA
type IntfA interface {
FuncA()
}
具有該方法的任何類型都實(shí)現(xiàn) ,并且符合該說明,因此您可以將 的實(shí)例傳遞給需要 的函數(shù)。FuncAIntfAImplementationImplementationIntfA
同樣,如果您需要一個(gè)同時(shí)包含 和 的接口,則可以聲明:FuncAFuncB
type IntfAB interface {
FuncA()
FuncB()
}
并實(shí)現(xiàn) .ImplementationIntfAB
因此,理想情況下,您將在使用它的位置聲明所需的接口,并且具有一組匹配方法的任何類型都可用于該接口的實(shí)現(xiàn)。
如果您基于現(xiàn)有接口編寫,則可以將該接口放在與實(shí)現(xiàn)不同的包中,或者可以將接口和實(shí)現(xiàn)保留在同一包中,以對(duì)您的用例更有意義為準(zhǔn)。
- 1 回答
- 0 關(guān)注
- 131 瀏覽
添加回答
舉報(bào)