golang反射NumMethod()返回值的问题
问题
- 结构体函数加了指针NumMethod()就获取不到,不加指针就能获取到
相关代码
package main
import(
"fmt"
"reflect"
)
type User struct{
Id int
Name string
Age int
}
func (u *User) Call(){
u.Id = 100
fmt.Printf("%v\n",u)
}
func main(){
user:=User{1,"ding",18}
GetField(user)
}
func GetField(arg interface{}){
argType := reflect.TypeOf(arg)
fmt.Println(argType.NumMethod())
for i:=0;i<argType.NumMethod();i++{
m:=argType.Method(i)
fmt.Printf("%s: %v\n",m.Name,m.Type)
}
}
结果为
0
如果将 func (u *User) Call()改为func (u User) Call()不加指针
结果为
1
Call: func(main.User)
为什么加了指针之后反而获取的值为0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
指针是一种类型。你如果要看指针类型的方法,TypeOf函数传进去指针就好
改成
输出