我正在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
关于go - 如何获得函数的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63040159/