59.笔记go语言——go语言中的反射
每个语言都有反射,Go语言也是。
Go语言是静态类型,所有数据的类型在编译器都是明确的
反射例子一
代码如下:
packagemain
import(
"fmt"
"reflect"
)
funcmain(){
varxfloat64=3.4
fmt.Println("type:",reflect.TypeOf(x))
}
执行:
输出如下:
type: float64
OK,SO?
reflect包有两个数据类型必须知道,一个是Type,一个是Value。
Type就是定义的类型的一个数据类型,Value是值的类型
TypeOf和ValueOf是获取Type和Value的方法
说明
反射是用程序检查其所拥有的结构,尤其是类型的一种能力;这是元编程的一种形式。反射可以在运行时检查类型和变量,例如它的大小、方法和 动态 的调用这些方法。这对于没有源代码的包尤其有用。这是一个强大的工具,除非真得有必要,否则应当避免使用或小心使用。
变量的最基本信息就是类型和值:反射包的 Type 用来表示一个 Go 类型,反射包的Value 为 Go 值提供了反射接口。