> 什么是反射,反射就是程序在运行的时候能够“观察”并且修改自己的行为。
## 参考
https://www.bookstack.cn/read/qcrao-Go-Questions/%E5%8F%8D%E5%B0%84-Go%20%E8%AF%AD%E8%A8%80%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%8F%8D%E5%B0%84.md
![https://static.bookstack.cn/projects/qcrao-Go-Questions/3398dceef374166abb8218b4abda36a5.png](https://static.bookstack.cn/projects/qcrao-Go-Questions/3398dceef374166abb8218b4abda36a5.png)
总结一下:TypeOf() 函数返回一个接口,这个接口定义了一系列方法,利用这些方法可以获取关于类型的所有信息; ValueOf() 函数返回一个结构体变量,包含类型信息以及实际值。
## 三大定律
- 第一条是最基本的:反射是一种检测存储在 `interface` 中的类型和值机制,这可以通过 `TypeOf` 函数和 `ValueOf` 函数得到
- 第二条实际上和第一条是相反的机制,它将 `ValueOf` 的返回值通过 `Interface()` 函数反向转变成 `interface` 变量。
- 如果想要操作原变量,反射变量 Value 必须要 hold 住�