登录
首页 >  Golang >  Go问答

为什么不能将返回 int 的函数赋值给返回 interface{} 的函数?

来源:stackoverflow

时间:2024-02-29 23:54:27 492浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《为什么不能将返回 int 的函数赋值给返回 interface{} 的函数?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我无法解释为什么这段代码无法编译:

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 规范,所有类型都实现空接口 interface{}。为什么函数文字不能分配给类型 oothinair


解决方案


任何类型都可以分配给接口。

包含接口的类型是另一回事。

[]int 不可分配给 []interface{}

func() int 不可分配给 func() 接口{}

您必须将整个事情放入 interface{} 中,然后使用反射来处理结果。

因为 []int 可分配给 interface{},而 func() int 可分配给 interface{}

今天关于《为什么不能将返回 int 的函数赋值给返回 interface{} 的函数?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>