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