常用方法
reflect.Type 和 reflect.Value
interface{}类型变量其具体类型可以使用reflect.Tpye来表示,而其具体值则使用reflect.Value来表示。而reflect.Type和reflect.Value分别提供reflect.TypeOf()和reflect.ValueOf()来获取interface{}的具体类型及具体值。接下来我们结合例子来进行说明
package main
import(
"fmt"
"reflect"
)
type order struct{
ordId int
customerId int
}
func query(q interface{}) {
t := reflect.TypeOf(q)
v := reflect.ValueOf(q)
fmt.Println("Type ", t)
fmt.Println("Value ", v)
}
func main(){
o := order{
ordId: 456,
customerId: 56,
}
query(o)
}
输出
Type main.order
Value {456 56}
可以通过下面几种方法从反射值对象 reflect.Value 中获取原值,如下