反射
前言
反射主要是指程序可以访问、检测和修改它本身的状态或行为的一种能力,是一种动态获取变量类型信息和值信息的一种机制。一些框架采用反射机制,能让框架更加通用和开放。Go语言的反射机制实现了在运行时动态调用对象的方法和属性的功能,其相关包为标准库的reflect。
Go语言的反射主要通过Type和Value两个基本概念来表达。其中Type主要用于表示被反射变量的类型信息,而Value用于表示被反射变量自身的实例信息。
反射三原则:
- 反射可以通过接口变量值获取反射对象
- 反射可以通过反射对象获取接口变量值
- 修改反射对象的前提是值必须是可设置的