1 回答

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