看到一段代码:
func main() {
var age interface{} = 25
t := reflect.TypeOf(age)
v := reflect.ValueOf(age)
fmt.Println(t, v) //int 25
fmt.Printf("%T---%v\n", t, t) //*reflect.rtype---int
fmt.Printf("%T---%v\n", v, v) //reflect.Value---25
}
这边有几个问题:
(1)Value结构体是不是实现了Type接口。
(2)为什么打印fmt.Println(t,v)结果是int 25,t,v不是一个是接口一个是结构体吗?直接打印一个结构体值是25?有点不懂
【结果写在注释里面,这里边我对t,v的类型不理解。比如reflect.ValueOf我看了源码,它应该返回一个Value结构体,那么v就是一个结构体,打印一个结构体fmt.Println(v)的结果25,这个怎么理解,你说打印一个int类型值是25我理解,直接这样打印一个结构体也是一个int值?】
fmt:
fmt 的 print 系列函数对 reflect.Value 有特殊处理。