在 Golang 中对所有 接口 进行 反射,都可以得到一个包含 Type 和 Value 的信息结构。顾名思义,Type 主要表达的是被反射的这个 变量 本身的类型信息,而 Value 则为该变量实例本身的信息。
reflect.TypeOf(varname)
使用 reflect.TypeOf
传入我们要获取的变量,即可以获取该变量的类型。
reflect.ValueOf(varname)
使用 reflect.ValueOf
传入我们要获取的变量,即可以获取该变量对应的值。
可以使用反射获取变量的类型信息
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
var x = 1024
var str = "HaiCoder"
fmt.Println("x type =", reflect.TypeOf(x))
fmt.Println("str type =", reflect.TypeOf(str))
}
程序运行后,控制台输出如下:
首先,我们定义了一个 int 类型 的变量 x 和一个 字符串 类型的变量 str,接着,我们使用 reflect.TypeOf
获取这两个变量的类型,并打印。
即,我们使用 reflect.TypeOf
反射出了两个基本数据类型的变量的类型。
可以使用反射获取变量的Value
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
var x = 1024
var str = "HaiCoder"
fmt.Println("X value =", reflect.ValueOf(x))
fmt.Println("Str value =", reflect.ValueOf(str))
}
程序运行后,控制台输出如下:
首先,我们定义了一个 int 类型的变量 x 和一个字符串类型的变量 str,接着,我们使用 reflect.ValueOf
获取这两个变量的值,并打印。
即,我们使用 reflect.ValueOf
反射出了两个基本数据类型的变量的值。
使用反射获取变量基本类型的语法:
reflect.TypeOf(varname)
使用反射获取变量值的基本语法:
reflect.ValueOf(varname)