1 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的接口定義沒(méi)有任何問(wèn)題。問(wèn)題是您沒(méi)有正確轉(zhuǎn)換[]Hammer為[]HammerInterface. 看起來(lái)您希望這會(huì)神奇地發(fā)生,但事實(shí)并非如此。
在這段代碼中:
func (t Toolbox) GetHammers() []HammerInterface {
return []HammerInterface{t.Hammers}
}
您可能期望返回的結(jié)果是 3 的一部分HammerInterface,但相反,您得到的是一個(gè)HammerInterface,它實(shí)際上是 3 的一部分Hammers。
您必須手動(dòng)執(zhí)行此轉(zhuǎn)換。有關(guān)更多詳細(xì)信息,請(qǐng)參閱此帖子。
func (t Toolbox) GetHammers() []HammerInterface {
hammerInterfaces := make([]HammerInterface, len(t.Hammers))
for i, hammer := range t.Hammers {
hammerInterfaces[i] = t.Hammers[i]
}
return hammerInterfaces
}
在大多數(shù)真實(shí)場(chǎng)景中,您的錯(cuò)誤會(huì)被編譯器捕獲,因?yàn)槟?hammers ( t.Hammers) 片段不滿(mǎn)足HammerInterface接口,但在您的情況下,由于該接口為空,因此它匹配任何類(lèi)型interface{}。
- 1 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)