是否可以像这样反映函数名称?

时间:2016-03-16 04:23:11

标签: go

是否可以像这样反映函数名称?

我是一名新的 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())
        }
    }
}

1 个答案:

答案 0 :(得分:0)

谢谢马歇尔。

以下答案:

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