Go 语言编程 — reflect 反射工具
目录 文章目录 目录 反射机制 reflect 包 Struct Tags 与 Reflect 反射机制 反射是指在程序运行期对程序本身进行访问和修改的能力 。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行文件。因为可执行文件不存在变量名,所以在程序运行时,就无法通过变量名作为句柄并获取到自身的信息。 支持反射的语言可以在程序编译期将变量的反射信息,如:结构体信息、字段名称、类型信息等整合到可执行文件中,并给程序提供接口访问这些反射信息,这样就可以在程序运行期间通过接口来获取到变量的反射信息,并且有能力修改它们。 reflect 包 Struct Tags 与 Reflect 举一个例子:Golang 中的变量名是大小写敏感的,对于小写的局部变量,在包外无法被引用。但实际上,Golang 程序是经常需要与其它系统进行数据交互的,例如:Redis 数据库访问。这样就需要一种设计,可以灵活的将 Golang 最核心的数据类型 Struct 转换为其他数据格式,这就是 Struct Tags。在需要将 Struct 转换为其它数据格式时,会根据 Tags 中定义的信息进行转换。 Struct Tags 类似注释,使用反引号 “`”,Golang 提供了 reflect 包来对 Struct Tags 进行解析。 示例: package main import (