初步了解 golang reflect pkg [TOC] 阅读这篇文章之前,建议先熟悉官方文档 pkg/reflect Golang 语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的 reflect 包就是反射相关的,只要包含这个包就可以使用。实际使用中可以先不考虑使用 reflect 对性能的影响,先实现功能,再利用 benchmark test 去优化。 什么时候应该用 reflect 首先你得确认你会使用 reflect pkg,并且不是乱用 更好的抽象和约束,减少 bug 几率 提升代码的易读性 提高开发效率 1 理解 Type & Kind & Value reflect package 提供了 3 个重要的结构体 Type、Kind 和 Value: - Type: 就是 Go concrete type, 例如 int/string/bool/customStruct … - Kind: 就是 Go static type(固定的),例如 Boot/Int/Struct … - Value: 也就是 Go value, 承载变量 / 常量的值 type Kind uint Kind 用途: 用于 runtime 和 compiler 为变量分配变量内存布局和函数分配堆栈……

阅读全文