我无法理解是什么问题。这是示例代码:type InterfaceFunction func(i interface{})func main() { var notOk InterfaceFunction = func(s string){} var ok InterfaceFunction = func(i interface{}){}}
1 回答
智慧大石
TA贡献1946条经验 获得超3个赞
因为种类不一样。想象一下:
type InterfaceFunction func(i interface{})
func main() {
var notOk InterfaceFunction = func(s string){}
myFunc(InterfaceFunction(notOk)) // This can't possibly work!
}
func myFunc(fn InterfaceFunction) {
x := 17
fn(x) // This is legal, because InterfaceFunction takes an interface{}
}
我们的myFunc这里接受 an InterfaceFunction,根据定义,接受 anyinterface{}作为它的参数。myFunc可以通过它想要的任何东西。如果我们被允许在这里使用 afunc(string)作为 a func(interface{}),myFunc将不再具有编译时类型安全性:它会将 a 传递int给一个接受 a 的函数string。
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消