码迷,mamicode.com
首页 > 其他好文 > 详细

Golang 反射

时间:2020-01-28 00:03:08      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:hit   class   https   pack   cte   port   col   color   func   

反射是

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

函数

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\n", i, key.Name, key.Type, value)
    }

    // 遍历函数
    for i := 0; i < t.NumMethod(); i = i + 1 {
        m := t.Method(i)
        fmt.Printf("第%d个函数:%s, 类型:%s\n", i, m.Name, m.Type)
    }
}

参考

链接

Golang 反射

标签:hit   class   https   pack   cte   port   col   color   func   

原文地址:https://www.cnblogs.com/kaituorensheng/p/12237171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!