go - 是否可以像这样通过反射获取函数名称?

标签 go

<分区>

这样用reflect可以得到函数名吗?

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

最佳答案

谢谢编码(marshal)。

答案如下:

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/

相关文章:

go - 在 Golang 中渲染页面后如何发送 websocket 数据?

go - 如何通过登录将 session 数据存储在 chi 路由器上下文中

google-app-engine - 有谁知道与 Google App Engine 兼容的 Go Lang websocket 客户端?

go - 如何将结构类型传递给模块函数?

unit-testing - 如何在向 API 发送 http 请求时进行模拟

go - 如何确定哪些数据库表列需要从修改后的结构中更新?

go - 在Apache Beam Dataflow管道中控制并行度

session - 戈朗 : Retrieving Gorilla/Sessions Cookie

go - 如何通过在Golang中发送POST来解析400个状态代码?

go - 在编译时解析模板