【发布时间】:2014-02-01 17:33:45
【问题描述】:
我知道我可以通过反射获取对象的值,然后使用类型断言来取回实际对象:
obj := new(User)
out := reflect.ValueOf(obj).Elem().Interface().(User)
fmt.Println(out == *obj) // true
但是如果我不知道对象的类型是User,我该怎么做类型断言呢?
假设它在一个函数中,例如:
func Foo(obj interface{}) bool {
// out := reflect.ValueOf(obj).Elem().Interface().( ... )
return out == *obj
}
func main() {
obj := new(User)
fmt.Println(Foo(obj))
}
在Foo 函数中,你永远不会知道实际传递的是什么类型的对象,那么如何完成类型断言?
【问题讨论】:
标签: go