为了确定给定类型是否使用reflect包实现接口,您需要将reflect.Type传递给reflect.Type.Implements()。您如何获得这些类型之一?
作为一个例子,试图获得未初始化的os.Error(接口)类型的类型并 没有 工作(它恐慌的时候,你要调用它的种类())
var err os.Error fmt.Printf("%#v\n", reflect.TypeOf(err).Kind())
像这样做:
var err *os.Error t := reflect.TypeOf(err).Elem()
或一行:
t := reflect.TypeOf((*os.Error)(nil)).Elem()