例如,我想做这样的事情,
package main
import (
"fmt"
"reflect"
)
func main() {
var f func(int) int
v := reflect.ValueOf(f)
fmt.Println(v.ReturnType() == reflect.TypeOf(1)) // => true
}
Run Code Online (Sandbox Code Playgroud)
ReturnType反射包中不存在方法.我的问题是,我可以在不使用的情况下实现这样的功能cgo.
而不是使用reflect.ValueOf(f)尝试reflect.TypeOf(f).该Type类型有两个相关的方法名为NumOut和Out(int).要按顺序获取所有返回值的类型,可以使用以下循环
typ := reflect.TypeOf(f)
for i := 0; i < typ.NumOut(); i++ {
returnType := typ.Out(i)
// do something with returnType
}
Run Code Online (Sandbox Code Playgroud)
如果您确定您的功能只有一个返回值,您可以随时使用Out(0),标准免责声明,确保您的输入正确适用.