一、介绍
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
推荐阅读
- 用原生Go写一个自己的博客-搭建项目
- 极客时间-Go进阶训练营|全新升级第4期|完结无密
- golang操作clickhouse使用入门
- Go的省略符 omitempty和 - 两种方式详解
- 使用Shifu在OpenYurt集群中接入RTSP协议摄像头
- golang metrics各个指标含义
- 如何用Shifu来接入一个私有驱动的物联网设备
- 在Golang中连接两个字符串的不同方法
- 在Golang中比较字符串的不同方法