golang 反射拿不到method

新手上路,请多包涵

如下代码:
其中保持两个地方不能改变:

  1. func (t *t1) Name() string { 必须是指针
  2. reflect.ValueOf(m) 必须是值

怎么才能拿到 方法呢?

package main

import (
    "fmt"
    "reflect"
)

type t1 struct{}

func (t *t1) Name() string {
    return "tbl_t1"
}
func main() {
    m := t1{}
    rv := reflect.ValueOf(m)
    fn := rv.MethodByName("Name")
    fmt.Println(fn)
}
阅读 2k
1 个回答
func main() {
    // new pointer type
    m := new(t1)
    rv := reflect.ValueOf(m)
    fn := rv.MethodByName("Name")
    fmt.Println(fn)
    // call method
    fmt.Println(fn.Call(nil)[0].String())
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题