在 Go 语言中,可以使用反射机制获取当前函数的所有参数。以下是一个示例代码:
package main
import (
"fmt"
"reflect"
)
func main() {
foo("hello", 42, true)
}
func foo(args ...interface{}) {
funcType := reflect.TypeOf(foo)
if funcType.Kind() != reflect.Func {
return
}
numArgs := funcType.NumIn()
fmt.Println("Function has", numArgs, "arguments:")
for i := 0; i < numArgs; i++ {
argType := funcType.In(i)
fmt.Println(" Arg", i+1, "type:", argType)
}
}
在这个例子中,我们定义了一个函数 foo
,它接受任意数量的参数。在 main
函数中,我们调用 foo
并传入三个参数。在 foo
函数中,我们使用反射机制获取当前函数的类型,并通过 NumIn()
方法获取该函数的参数数量。然后,我们可以通过 In()
方法逐个获取每个参数的类型。在这个例子中,我们只是简单地打印出每个参数的类型,但你可以根据需要执行任何操作。
评论(0)