【发布时间】:2019-09-27 03:06:54
【问题描述】:
我无法解释为什么这段代码会编译 not:
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
根据 GoLang 规范,that 所有类型都实现了空接口 interface{}。为什么函数文字 not 可分配给类型 ooThinAir?
【问题讨论】:
-
ooThinAir不是interface{}。如果是 (play.golang.org/p/x_pVwLdf3NS),那没关系,但事实并非如此。 -
A
func() int不能分配给func() interface{}。使用这个:return func() interface{} { return rand.Intn(100) }.
标签: go