go reflect struct (go反射与struct结构体)

一、介绍 reflect包主要用来检查interface{}类型的类型type和值value
我们可以用

reflect.TypeOf()得到reflect.Type 反射类型 reflect.ValueOf() 得到reflect.Value 反射值

二、reflect.Type 在这里我们以struct举例:打开源码 src/reflect/type.go
type Type interface { //通用的3个函数 //返回kind,基础类型,Struct,Bool,Int,Int8,Array,Chan,Func,Map... Kind() Kind //返回结构体名称 Name() string //返回包路径 PkgPath() string //struct相关的3个重要方法,可以看到如果不是struct的话,会报错// Field returns a struct type's i'th field. // It panics if the type's Kind is not Struct. // It panics if i is not in the range [0, NumField()). Field(i int) StructField// FieldByName returns the struct field with the given name // and a boolean indicating if the field was found. FieldByName(name string) (StructField, bool)// NumField returns a struct type's field count. // It panics if the type's Kind is not Struct. NumField() int }

本文主要截取了reflect.Type的6个方法
1.通用的方法 Kind(),Name(),PkgPath()
2.struct相关方法 NumField(),FieldByName(),Field()
【go reflect struct (go反射与struct结构体)】我们先看一个结构体
type Person struct { Name string `json:"name"` Ageint`json:"age"` }

二、reflect.Value

    推荐阅读