gpt4 book ai didi

reflection - 在go中发现当前函数的返回类型

转载 作者:IT王子 更新时间:2023-10-29 01:22:26 25 4
gpt4 key购买 nike

我有一个使用反射和 reflect.MakeFunc 生成的函数,所以直到运行时我才真正拥有返回类型。

在 MakeFunc 使用的模板函数中,有没有办法确定被模板化的具体函数的返回类型?

本质上,有没有办法在运行时确定当前正在执行的函数的返回类型?

我知道 Out 方法:

fn.Type().Out(0)

我可以很容易地找到函数的返回类型吗?

但是有没有办法找到当前正在执行的函数的返回类型(而不是显式传递的函数引用)。

最佳答案

您应该检查 fn.Type().Out(0).Kind(),以获得 example :

func main() {    
fnTmpl := func(in []reflect.Value) []reflect.Value {
return []reflect.Value{in[0]}
}
makeFn := func(fptr interface{}) {
fn := reflect.ValueOf(fptr).Elem()
fn.Set(reflect.MakeFunc(fn.Type(), fnTmpl))
}
var nFn func(int) int
makeFn(&nFn)
kind := reflect.TypeOf(nFn).Out(0).Kind()
switch kind {
case reflect.Int:
fmt.Println("int")

}
}

关于reflection - 在go中发现当前函数的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24735590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com