• Golang 反射


    反射是

    运行时获取、修改对象内部结构的能力

    函数

    reflect.TypeOf()

    reflect.ValueOf()

    示例

    package basicTest
    
    import (
        "fmt"
        "reflect"
    )
    
    func (u User) GetName() string {
        return u.Name
    }
    
    func (u User) GetAge() int {
        return u.Age
    }
    
    type User struct {
        Name string
        Age  int
    }
    
    func ReflectLearn() {
        user := User{"jihite", 25}
    
        // TypeOf
        t := reflect.TypeOf(user)
        fmt.Println(t)
    
        // ValueOf
        v := reflect.ValueOf(user)
        fmt.Println(v)
    
        // Interface
        u1 := v.Interface().(User)
        fmt.Println(u1)
    
        // type 底层类型
        fmt.Println(t.Kind())
        fmt.Println(v.Kind())
    
        // 遍历字段
        for i := 0; i < t.NumField(); i = i + 1 {
            key := t.Field(i)
            value := v.Field(i).Interface()
            fmt.Printf("第%d个字段是:%s, 类型:%s, 值:%s
    ", i, key.Name, key.Type, value)
        }
    
        // 遍历函数
        for i := 0; i < t.NumMethod(); i = i + 1 {
            m := t.Method(i)
            fmt.Printf("第%d个函数:%s, 类型:%s
    ", i, m.Name, m.Type)
        }
    }

    参考

    链接

  • 相关阅读:
    #include<unistd.h>存在linux中,含有系统服务的函数
    Value Categories
    Main function
    Phases of translation
    Memory model
    Unqualified name lookup
    Qualified name lookup
    Name lookup
    Definitions
    Object lifetime
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/12237171.html
Copyright © 2020-2023  润新知