反射的基本原理
反射的基本原理
想要很好了理解、使用反射,首先要理清 变量、 reflect.Type类型、 reflect.Type类型对应方法,以及reflect.Value类型和reflect.Value类型对应方法之间的关系。
我们结合Golang帮助文档,对应下图来梳理他们之间大致的调用关系。
实时上,我们学习反射,主要是学习使用上面的Type 和 Value 所对应的诸多方法的使用。借助这些方法完成变量到Type,通过Type 反过来再操作变量。 或者从变量到 Value类型,通过Value 提供的方法反向再操作这个变量。
说到这里,可能有的同学会觉得比较奇怪,为什么要提供这种机制呢?
使用反射这种机制的好处是,系统可以借助反射在底层帮助我们创建对象,不需要所有的事情都由程序员自己来完成。甚至可以在底层帮助我们调用方法。而它所做的这些事情,对于上层使用的用户来说是完全不透明、不可见的。
因此,为了提高应用性,降低用户使用难度,许多Go框架开发中大量的使用了反射技术。