作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
反射问题,使用 MethodByName
代码:
package main
import (
"reflect"
"fmt"
)
type test struct {}
var serviceType = map[string]reflect.Value{
"test": reflect.ValueOf(test{}),
}
func (t *test) prnt() {
fmt.Println("test ok")
}
func callFunc(strct string, fName string) {
s := serviceType[strct].MethodByName(fName)
if !s.IsValid(){
fmt.Println("not correct")
return
}
s.Call(make([]reflect.Value,0))
}
func main() {
callFunc("test", "prnt")
}
输出:
not correct
Playground : https://play.golang.org/p/ZLEQBGYoUOB
你能帮忙看看我做错了什么吗?
最佳答案
有两点需要更正。
prnt
tp Prnt
test
的指针传递给reflect.ValueOf()
方法。这是修改后的工作代码 https://play.golang.org/p/4MK2kqOz6e2
关于go - 反射(reflect) (MethodByName) 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135649/
我正在使用反射作为一个快速而肮脏的脚本处理程序,但我无法弄清楚错误检查 如何检查 MethodByName 是否找到了有效方法? 文档说零值 - 什么是零值? 有人能帮忙吗? https://play
反射问题,使用 MethodByName 代码: package main import ( "reflect" "fmt" ) type test struct {} var ser
我是一名优秀的程序员,十分优秀!