是否可以通过反射来获得函数名称

是否可以通过反射来获得函数名称

This question already has an answer here:
How to dump methods of structs in Golang?

(1个答案)


4年前关闭。




是否可以通过反射来获得函数名称?

我是一个新的 golang 程序员,我不知道如何解决。

以下代码:
type A struct {
    Name string
}

func (this *A) Func1(name string) {
    fmt.Println(name)
}

func (this *A) Func2(name string, value string) {
    fmt.Println(name + ": " + value)
}

func main() {
    a := new(A)
    v := reflect.ValueOf(a)

    for i := 0; i < v.NumMethod(); i++ {
        method := v.Method(i)
        if method.IsValid() {
            t := reflect.TypeOf(method.Interface())
            // how to echo the function name of A: Func1,Func2
            fmt.Printf("%s  %d  %d\n", runtime.FuncForPC(method.Pointer()).Name(), t.NumIn(), t.NumOut())
        }
    }
}

最佳答案

感谢machiel。

答案如下:

t := reflect.TypeOf(new(A))
for i := 0; i < t.NumMethod(); i++ {
    method := t.Method(i)
    fmt.Println(method.Name)
}

关于go - 是否可以通过反射来获得函数名称? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36026753/

10-15 03:44