Golang reflect.Kind()函数及示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程