package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
// 通过反射获取,反射对象的具体种类,请使用 Kind()方法或者 Kind().String()
func main(){
p := Person{"张三",20}
// 1、
typeOf := reflect.TypeOf(p) // 返回一个Type(类型)接口,并不是我们需要的种类
valueOf := reflect.ValueOf(p) // 返回具体的Value(值)
fmt.Println(typeOf) // output: main.Person
fmt.Println(valueOf) // output: {张三 20}
//2、Kind()方法才返回我们需要的具体种类(即:int,uint,string,struct,map,slice,chan ...)
typeKind := reflect.TypeOf(p).Kind() // Type.Kind() 返回 Kind
valueKind := reflect.ValueOf(p).Kind() // Value.Kind() 也返回 kind
fmt.Println(typeKind) // output: struct
fmt.Println(valueKind) // output: struct
}
有疑问加站长微信联系(非本文作者)