给出一个函数:
type myFunc func(...interface{}) (interface{})
我想获取 myFunc 的类型,例如:
t := reflect.TypeOf(myFunc)
或者
t := reflect.TypeOf((*myFunc)(nil))
我找到的唯一方法是首先创建一个临时变量 myFunc,然后从中获取 TypeOf。
var v myFunc
t := reflect.TypeOf(v)
有更好的方法吗?
最佳答案
获取函数类型的最简单方法是reflect.TypeOf(myFunc(nil))
。
package main
import (
"fmt"
"reflect"
)
type myFunc func(...interface{}) interface{}
func main() {
t := reflect.TypeOf(myFunc(nil))
// Print whether function type is variadic
fmt.Println("Variadic =", t.IsVariadic())
// Print out every input type
for i := 0; i < t.NumIn(); i++ {
fmt.Println("In", i, "=", t.In(i))
}
// Print out every output type
for i := 0; i < t.NumOut(); i++ {
fmt.Println("Out", i, "=", t.Out(i))
}
}
关于go - 获取函数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49044275/