golang_反射: 反射reflect包的用法介绍

版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87919651

反射 reflect

反射是获取类型的信息的方法

TypeOf

func TypeOf(i interface{}) Type

TypeOf返回接口中保存的值的类型,TypeOf(nil)会返回nil。

反射对象的类型

ValueOf

func ValueOf(i interface{}) Value

ValueOf返回一个初始化为i接口保管的具体值的Value,ValueOf(nil)返回Value零值。

反射对象的值

NumField

func (v Value) NumField() int

返回v持有的结构体类型值的字段数,如果v的Kind不是Struct会panic

Kind代表Type类型值表示的具体分类

Field

扫描二维码关注公众号,回复: 5424026 查看本文章
func (v Value) Field(i int) Value

返回结构体的第i个字段(的Value封装)。如果v的Kind不是Struct或i出界会panic

通过对象反射类

type Student struct {
	name string	"姓名"
	age int	"年龄"
}
func main() {
	var stu Student=Student{"tom",23}
	t:=reflect.TypeOf(stu)			//反射对象的类型
	v:=reflect.ValueOf(stu)			//反射对象的值
	for i:=0;i<t.NumField();i++{
		fmt.Println("字段名:",t.Field(i).Name,"| 值:",v.Field(i),"| 
		备注:",t.Field(i).Tag,"| 类型:",t.Field(i).Type)
	}
}

Output:

字段名: name | 值: tom | 备注: 姓名 | 类型: string
字段名: age | 值: 23 | 备注: 年龄 | 类型: int

猜你喜欢

转载自blog.csdn.net/weixin_43851310/article/details/87919651