gpt4 book ai didi

go - 带有接口(interface)参数的函数不等于带有字符串参数的函数。为什么?

转载 作者:行者123 更新时间:2023-12-01 22:34:43 25 4
gpt4 key购买 nike

我无法理解是什么问题。
这是示例代码:

type InterfaceFunction func(i interface{})
func main() {
var notOk InterfaceFunction = func(s string){}
var ok InterfaceFunction = func(i interface{}){}
}

最佳答案

因为种类不一样。想象一下:

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这里需要一个 InterfaceFunction ,根据定义,它采用任何 interface{}作为它的论据。 myFunc可以通过它想要的任何东西。如果我们被允许使用 func(string)作为 func(interface{})在这里, myFunc将不再具有编译时类型安全:它将传递 int到一个接受 string 的函数.

关于go - 带有接口(interface)参数的函数不等于带有字符串参数的函数。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60283628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com