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 关注
- 115 浏览
添加回答
举报