Go语言反射Type详解教程
在 中,使用 的方法 reflect.TypeOf 可以获取 的 ,同时,在 reflect.TypeOf 返回的 Type 中,我们还可以使用 Kind() 来获取类型的详细信息。
Kind() 方法返回的变量的数据类型,我们可以用来进行类型判断。
反射获取Type
语法
reflect.TypeOf(varname).Kind()
说明
reflect.TypeOf
反射Kind类型判断
语法
v.Kind() == reflect.Float64
说明
使用 Type 的 Kind 方法,和基本数据类型进行相等判断。
案例
Go语言反射获取类型详细信息
可以使用反射获取类型的详细信息
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) }
程序运行后,控制台输出如下:
reflect.TypeOf
同时,我们使用 TypeOf 返回的变量中的 Kind 方法,获取返回的类型的详细信息,并打印。
Go语言反射类型判断
可以使用反射获取类型的详细信息可以和基本类型做判断
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 里面的数据类型。
Go语言反射Type详解教程总结
反射获取变量类型的详细信息语法:
reflect.TypeOf(varname).Kind()
类型详细信息和基本数据类型比较的语法:
v.Kind() == reflect.Float64