首页 > 代码库 > go reflect
go reflect
package main import ( "fmt" "reflect" // 反射包 ) type User struct{ //结构体类型 Id int Name string Age int } func (u User) Hello(){ //结构体的方法 fmt.Println("hello") } func main(){ u := User{1,"ok",10} //结构体变量 Info(u) //调用info方法,参数为结构体 } func Info(o interface{}){ //参数为一个接口类型 t := reflect.TypeOf(o) //获取这个结构体的类型 fmt.Println("Type:",t) //打印 v := reflect.ValueOf(o) //获取这个结构体中值 fmt.Println(v) //打印 for i := 0;i < t.NumField(); i++ { //获取这个结构体类型注意是类型,的属性 f := t.Field(i) //获取这个类型[变量t,上面获取到了]的第i个属性 val := v.Field(i).Interface() //获取这个结构体变量[变量v上面获取到]第i的属性的值 fmt.Println(f.Name,f.Type,val) //f.Name 属性名;f.Type 属性类型;val 属性值 } for i := 0; i < t.NumMethod(); i++ { //循环打印出方法 m := t.Method(i) fmt.Println(m.Name,m.Type) } }
go reflect
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。