zoukankan      html  css  js  c++  java
  • golang reflect使用

    golang reflect使用

    反射的应用场景:

    1.)使用反射进行类型判断
    2.)使用反射访问结构体成员和结构体方法

    使用示例

    1.类型判断

    func CheckType(v interface{}){
        t := reflect.TypeOf(v)
        // 通过kind来判断类型
        switch t.Kind() {
            case reflect.Float32,reflect.Float64:
                fmt.Println("Float")
            case reflect.Int,reflect.Int32,reflect.Int64:
                fmt.Println("Int")
            default:
                fmt.Println("Unkonw")
        }
    }
    
    func TestType(t *testing.T) {
        var f int64 = 10
        // reflect.Type返回的类型(reflect.Type)
        // reflect.ValueOf 返回值 (reflect.Value)
        t.Log(reflect.TypeOf(f),reflect.ValueOf(f))
        t.Log(reflect.ValueOf(f).Type())
    }
    

    2.获取成员变量

    // 按名字访问结构体成员
    reflect.ValueOf(*e).FiledByName("Name")
    
    // 按名字访问结构的方法
    reflect.ValueOf(e).MethodByName("Update").Call([]reflect.Value{reflect.ValueOf(1)})
    

    3.访问结构体 tag

    reflect.TypeOf(*e).FieldByName("Name")
    
    【励志篇】: 古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。
  • 相关阅读:
    网站服务化
    网站服务化
    dubbo 服务化
    dubbo 服务化
    elk 搭建
    poj1840
    poj1840
    poj2299
    poj2299
    poj2388
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/14672060.html
Copyright © 2011-2022 走看看