golang实现简单的反射demo

来源:互联网 发布:c语言入门那本书好 编辑:程序博客网 时间:2024/06/05 06:28
package mainimport ("fmt""reflect" //反射的包)//声明一个User结构type User struct {Id   intName stringAge  int}//User结构绑定的方法func (u User) Hello() {fmt.Print("Hello Word")}func main() {//初始化结构u := User{1, "ok", 12}//调用得到反射信息的方法Info(u)}func Info(o interface{}) {//得到类型t := reflect.TypeOf(o)//输出类型的名称fmt.Print("Type", t.Name())//得到类型的值v := reflect.ValueOf(o)//声明要循环的长度,如果放在循环里面就要循环三次,这里只需要循环一次var num = t.NumField()fmt.Println("fieds:")for i := 0; i < num; i++ {f := t.Field(i)val := v.Field(i).Interface()//输出类型的名称,类型的类型,类型的值fmt.Printf("%6s: %v = %v\n", f.Name, f.Type, val)}//下面是反射得到类型的方法名称和类型的方法的类型var numMenthon = t.NumMethod()for i := 0; i < numMenthon; i++ {m := t.Method(i)fmt.Printf("%6s: %v\n", m.Name, m.Type)}}

原创粉丝点击