Go语言反射Type详解

Go语言反射Type详解教程

Golang 中,使用 反射 的方法 reflect.TypeOf 可以获取 变量数据类型,同时,在 reflect.TypeOf 返回的 Type 中,我们还可以使用 Kind() 方法 来获取类型的详细信息。

Kind() 方法返回的变量的数据类型,我们可以用来进行类型判断。

反射获取Type

语法

reflect.TypeOf(varname).Kind()

说明

使用 reflect.TypeOf 传入我们要获取的变量,即可以获取该变量的类型,同时使用 Kind 方法可以获取该类型的详细信息。

反射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) }

程序运行后,控制台输出如下:

06_golang反射Type详细信息.png

首先,我们定义了一个 int 类型 的变量 x 和一个 字符串 类型的变量 str,接着,我们使用 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") } }

程序运行后,控制台输出如下:

07_golang反射Type详细信息.png

我们可以使用 Type 返回的 Kind 函数,获取类型的详细信息,并且返回的详细信息可以和基本数据类型进行比较判断。

在比较判断时,我们需要使用 reflect 里面的数据类型。

Go语言反射Type详解教程总结

反射获取变量类型的详细信息语法:

reflect.TypeOf(varname).Kind()

类型详细信息和基本数据类型比较的语法:

v.Kind() == reflect.Float64