登录
首页 >  Golang >  Go问答

获取函数的返回类型的方法

来源:stackoverflow

时间:2024-03-13 14:30:32 157浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《获取函数的返回类型的方法》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我正在用 go 编写高阶函数,并试图找出内部函数 f 的返回类型。

作为一个简单的例子,假设我想返回内部函数返回类型的默认值:

  • 如果 f 返回字符串,则 getdefault(f) 返回 ""
  • 如果 f 返回 []byte,则 getdefault(f) 返回 []byte{}
func GetDefault(func(interface{})) {
  // How would I write this function?
}

是否可以在 go 中编写这样的函数,无需运行 f


解决方案


您可以使用反射来获取类型并初始化默认值。

func GetDefault(f interface{}) interface{} {
    ft := reflect.TypeOf(f)
    if ft.Kind() != reflect.Func {
        panic("not a func")
    }

    out0 := ft.Out(0) // type of the 0th output value
    return reflect.New(out0).Elem().Interface()
}

https://play.golang.org/p/BhevFvsut5z

好了,本文到此结束,带大家了解了《获取函数的返回类型的方法》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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