在 Golang 中,使用 反射 的方法 reflect.TypeOf 可以获取 变量 的 数据类型,同时,在 reflect.TypeOf 返回的 Type 中,我们还可以使用 Kind() 方法 来获取类型的详细信息。
Kind() 方法返回的变量的数据类型,我们可以用来进行类型判断。
reflect.TypeOf(varname).Kind()
使用 reflect.TypeOf
传入我们要获取的变量,即可以获取该变量的类型,同时使用 Kind 方法可以获取该类型的详细信息。
v.Kind() == reflect.Float64
使用 Type 的 Kind 方法,和基本数据类型进行相等判断。
可以使用反射获取类型的详细信息
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
var x = 1024
var str = "HaiCoder"
typeX := reflect.TypeOf(x)
typeStr := reflect.TypeOf(str)
typexKind := typeX.Kind()
typeStrKind := typeStr.Kind()
fmt.Println("x type =", typeX, ", Kind =", typexKind)
fmt.Println("str type =", typeStr, ", Kind =", typeStrKind)
}
程序运行后,控制台输出如下:
首先,我们定义了一个 int 类型 的变量 x 和一个 字符串 类型的变量 str,接着,我们使用 reflect.TypeOf
获取这两个变量的类型。
同时,我们使用 TypeOf 返回的变量中的 Kind 方法,获取返回的类型的详细信息,并打印。
可以使用反射获取类型的详细信息可以和基本类型做判断
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
var x = 1024
var str = "HaiCoder"
typeX := reflect.TypeOf(x)
typeStr := reflect.TypeOf(str)
typexKind := typeX.Kind()
typeStrKind := typeStr.Kind()
if typexKind == reflect.Int{
fmt.Println("typexKind is int")
}else{
fmt.Println("typexKind is not int")
}
if typeStrKind == reflect.String{
fmt.Println("typeStrKind is string")
}else{
fmt.Println("typeStrKind is not string")
}
}
程序运行后,控制台输出如下:
我们可以使用 Type 返回的 Kind 函数,获取类型的详细信息,并且返回的详细信息可以和基本数据类型进行比较判断。
在比较判断时,我们需要使用 reflect 包 里面的数据类型。
反射获取变量类型的详细信息语法:
reflect.TypeOf(varname).Kind()
类型详细信息和基本数据类型比较的语法:
v.Kind() == reflect.Float64