Go 获取函数的类型

Go 获取函数的类型,go,reflection,Go,Reflection,给出一个函数: type myFunc func(...interface{}) (interface{}) 我想得到myFunc的类型,比如: t := reflect.TypeOf(myFunc) 或 我发现的唯一方法是首先创建一个临时变量myFunc,然后从中获取TypeOf var v myFunc t := reflect.TypeOf(v) 有更好的方法吗?获取函数类型的最简单方法是reflect.TypeOf(myFunc(nil)) 主程序包 进口( “fmt” “反映”

给出一个函数:

type myFunc func(...interface{}) (interface{})
我想得到myFunc的类型,比如:

t := reflect.TypeOf(myFunc)

我发现的唯一方法是首先创建一个临时变量myFunc,然后从中获取TypeOf

var v myFunc
t := reflect.TypeOf(v)

有更好的方法吗?

获取函数类型的最简单方法是
reflect.TypeOf(myFunc(nil))

主程序包
进口(
“fmt”
“反映”
)
类型myFunc func(…接口{})接口{}
func main(){
t:=reflect.TypeOf(myFunc(nil))
//打印函数类型是否可变
fmt.Println(“Variadic=,t.IsVariadic())
//打印出每种输入类型
对于i:=0;i
参见相关/可能的副本:;和
var v myFunc
t := reflect.TypeOf(v)
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))
    }
}