Go 有人能解释这个结果吗?

Go 有人能解释这个结果吗?,go,struct,reflection,slice,Go,Struct,Reflection,Slice,有一个关于go反射的演示: func main(){ 测试:=[]字符串{“hello”} V:=反射值(测试) 如果reflect.TypeOf(V).Kind()=reflect.Struct{ fmt.Printf(“它是一个结构”) }否则{ 格式打印F(“其他”) } } 输出是“它是一个结构”V是一个返回的值,所以它是类型,它是一个结构,所以reflect.TypeOf(V.Kind()是reflect.struct。这并不奇怪 从reflect包中: type Value str

有一个关于go反射的演示:

func main(){
测试:=[]字符串{“hello”}
V:=反射值(测试)
如果reflect.TypeOf(V).Kind()=reflect.Struct{
fmt.Printf(“它是一个结构”)
}否则{
格式打印F(“其他”)
}
}

输出是
“它是一个结构”
V
是一个返回的值,所以它是类型,它是一个结构,所以
reflect.TypeOf(V.Kind()
reflect.struct
。这并不奇怪

reflect
包中:

type Value struct {
    // contains filtered or unexported fields
}
如果您通过了
测试
本身,则其类型将为
reflect.Slice

if reflect.TypeOf(test).Kind() == reflect.Slice {
    fmt.Printf("it's a slice")
} else {
    fmt.Printf("other")
}
这将打印(在上尝试):

it's a slice