reflect获取结构体方法时遇到的小问题
文章部分引用:
在使用reflect包获取函数,并调用时,总出现这个报错:
panic: reflect: call of reflect.Value.Call on zero Value
然后测试发现,只有公有函数(首字母大写的函数)可以通过reflect.MethodByName()函数获取,私有方法是不行的。
package main import ( "fmt" "reflect" ) type Student struct { Name string `json:"name" form:"username"` Age int `json:"age"` Score int `json:"score"` } func (s Student) SayHello() { // 当把SayHello改为sayHello之后就会报错,晕 T^T fmt.Println("123456") } func main() { v := Student{ Name: "Hello", Age: 3, Score: 100, } a := reflect.ValueOf(v) b := a.MethodByName("SayHello") b.Call(nil) }
本文作者:oaoa
本文链接:https://www.cnblogs.com/oaoa/p/17297694.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2019-04-07 1012 数字分类