zoukankan      html  css  js  c++  java
  • 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)
        }
    }
  • 相关阅读:
    HDU 1003 Max Sum
    HDU 1728 逃离迷宫
    UVA 10057 A midsummer night's dream.
    HDU 1232 畅通工程
    poj3331
    poj3481
    poj1053
    poj3281
    poj3199
    !!! Gridview的多种使用方法总结
  • 原文地址:https://www.cnblogs.com/jackylee92/p/6229337.html
Copyright © 2011-2022 走看看