package main
import (
"fmt"
"reflect"
)
// reflect 反射
type Student struct {
Name string `json:"name" jike:"名字"`
Score int `json:"score" jike:"成绩"`
}
func main() {
s1 := Student{
Name:"xiaomaike",
Score:666,
}
t_obj := reflect.TypeOf(s1) // TypeOf() 查看对象类型
//fmt.Printf("%#v\n", t_obj)
//fmt.Println(t_obj)
//fmt.Print(t_obj.Name(), t_obj.Kind()) // 类型名 种类
// 遍历 t_obj 字段值 NumField() 返回结构体对象的字段数
for i := 0; i < t_obj.NumField(); i++ {
filed := t_obj.Field(i)
fmt.Println(filed.Name, filed.Index, filed.Type, filed.Tag.Get("jike"))
}
// 通过字段名获取对应字段的信息
fmt.Printf("通过字段名获取对应字段的信息:\n")
if socre_field, ok := t_obj.FieldByName("Score"); ok{
fmt.Println(socre_field.Name, socre_field.Type)
}
}
golang reflect 反射
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 什么是接口(interface) 接口(interface)首先来说它是一种数据类型,里面存的数据是一组方法的集合...
- interface:不限定类型,只关注方法! 这是它的优点,因为编译器在编译时不去确定你传的到底是什么类型...