英文:
Getting function arguments at runtime in Go
问题
如何在Go中在运行时获取函数参数,我只知道如何获取函数名:
pc, file, line, ok := runtime.Caller(2)
rt := runtime.FuncForPC(pc)
return rt.Name() // Foo
我需要的是像这样的东西:
Foo(1,2,3)
// Foo_1_2_3
英文:
How to get function arguments in Go at runtime, all I know is only how to get function name:
pc, file, line, ok := runtime.Caller(2)
rt := runtime.FuncForPC(pc)
return rt.Name() // Foo
What I need is something like this:
Foo(1,2,3)
// Foo_1_2_3
答案1
得分: 4
这是一个Go语言的代码片段,它打印出了函数f1
的类型以及其参数的类型。代码的输出结果是:
func(int, string)
int
string
其中,func(int, string)
表示函数f1
的类型是接受一个int
类型和一个string
类型参数的函数。接下来的两行分别表示参数a
和参数b
的类型是int
和string
。
英文:
Not a full answer, but maybe this can help :
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println(reflect.TypeOf(f1))
for index := 0; index < reflect.TypeOf(f1).NumIn(); index++ {
fmt.Println(reflect.TypeOf(f1).In(index))
}
}
func f1(a int, b string) {}
prints :
func(int, string)
int
string
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论