Golang reflect.Kind()函数及示例
Go语言提供了内置支持运行时反射的实现方式,并利用reflect包帮助程序操作任意类型的对象。Golang中的 reflect.Kind() 函数用于查找种类名称。要访问此函数,需要在程序中导入reflect包。
语法:
func (k Kind) String() string
参数: 该函数不需要任何参数。
返回值: 该函数返回字符串(种类名称)。
以下示例说明了在Golang中使用上述方法的示例:
示例 1:
// Golang程序示例
// reflect.Kind()函数
package main
import (
"fmt"
"reflect"
)
type temp struct {
ord int
cId int
}
// 使用Kind()方法的函数
func useKind(val interface{}) {
s1 := reflect.TypeOf(val)
// 使用Kind()函数查找种类
s2 := s1.Kind()
fmt.Println("类型为", s1)
fmt.Println("种类为", s2)
}
// 主函数
func main() {
val := temp{
ord: 1,
cId: 513,
}
useKind(val)
}
输出:
类型为 main.temp
种类为 struct
示例 2:
// Golang程序示例
// reflect.Kind()函数
package main
import (
"fmt"
"reflect"
)
type temp struct {
ord int
cId int
}
// 使用Kind()方法的函数
func useKind(val interface{}) {
// 使用Kind()函数查找种类
if reflect.ValueOf(val).Kind() == reflect.Struct {
v := reflect.ValueOf(val)
fmt.Println("字段数", v.NumField())
for i := 0; i < v.NumField(); i++ {
fmt.Printf("Field: %d \t type: %T \t value: %v\n",
i, v.Field(i), v.Field(i))
}
}
}
// 主函数
func main() {
val := temp{
ord: 1,
cId: 513,
}
useKind(val)
}
输出:
字段数 2
Field: 0 type: reflect.Value value: 1
Field: 1 type: reflect.Value value: 513
极客教程