Go 为什么返回int的函数文本不能分配给返回接口{}的函数?
我无法解释为什么这段代码会编译:Go 为什么返回int的函数文本不能分配给返回接口{}的函数?,go,Go,我无法解释为什么这段代码会编译: 给定,根据GoLang规范,所有类型都实现空接口interface{}。为什么函数文本不能分配给类型ooThinAir 任何类型都可分配给接口 包含接口的类型是另一种情况 []int不可分配给[]接口{} func()int不能分配给func()接口{} 您必须将整个过程生成一个接口{},然后使用反射来处理结果 因为[]int可分配给interface{},而func()int可分配给interface{}ooThinAir不是interface{}。如果它是(
给定,根据GoLang规范,所有类型都实现空接口
interface{}
。为什么函数文本不能分配给类型ooThinAir
任何类型都可分配给接口
包含接口的类型是另一种情况
[]int
不可分配给[]接口{}
func()int
不能分配给func()接口{}
您必须将整个过程生成一个接口{}
,然后使用反射来处理结果
因为
[]int
可分配给interface{}
,而func()int
可分配给interface{}
ooThinAir
不是interface{}
。如果它是(),那就可以了,但它不是。func()int
不能分配给func()接口{}
。使用以下命令:returnfunc()接口{}{return rand.Intn(100)}
。
package main
import "math/rand"
type ooThinAir func() interface{}
func Int() ooThinAir {
return func() int {
return rand.Intn(100)
}
}
func main() {
}
// fails with: cannot use func literal (type func() int) as type ooThinAir in return argument