反射与文件reflect反射基本概念文件操作反射修改变量压缩归档文件操作01
目录01reflect反射基本概念•反射定义•Type•Value1reflect反射基本概念反射是指在程序运行期间对程序本身进行访问和修改的能力
一般地,程序在编译时,变量会被转换为内存地址,但变量名不会被编译器写入到可执行部分
因此在运行程序时,程序无法获取自身的信息
支持反射的语言则可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们
Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道这些变量的具体类型,这种机制被称为反射
反射也可以让我们将类型本身作为第一类的值类型处理
Go程序在运行期使用reflect包访问程序的反射信息;主要涉及到Type和Value这两个基本概念
反射定义1reflect反射基本概念reflect
TypeOf(varname)
Kind()反射获取变量类型的详细信息reflect
TypeOf(varname)
Kind()==reflect
Type反射类型详细信息和基本类型比较注:reflect
Type的Type表示数据变量类型,比如int、float64、string等
reflect
TypeOf(varname)反射获取变量类型packagemainimport("fmt""reflect")funcmain(){varaintfmt
Println(reflect
TypeOf(a)
Name())fmt
Println(reflect
TypeOf(a)
Kind())fmt
Println(reflect
TypeOf(a)
Align())fmt