golang反射
反射能做什么?获得运行时变量的值、根据变量名获得变量的值、更改变量的值。动态调用函数。
1、获得变量的类型
reflect.Type
中的Kind()
函数可以获得反射的变量类型。通过变量类型判断可以选择不同的处理方式
1 | // kind处理不同分支 |
2、调用函数
- 调用无入参出参函数
- 调用有入参函数
- 调用有入参和出参函数
1 | // 需求:根据一个函数字符串,调用函数,提供函数参数,接收返回值 |
3、获得结构体的特定Tag的值
这个和Java的注解起的作用是类似的。
1 | // 反射解析struct 中的tag |
4、动态注入
1 | // 类型转换和赋值 |
5、查看某个结构体是否实现了某个接口
1 | // 动物接口 |