我正在使用反射包来确定结构字段的类型是 interface{}
我想像这样进行比较(其中 t
是一个 reflect.Type
):
if t == reflect.TypeOf(interface{}) {
}
问题是编译器报错:type interface {} is not an expression
。
有没有办法检查结构字段的类型是否为接口(interface){}
?
最佳答案
您可以通过创建一个 nil 实例并使用反射来获取接口(interface) Y
的类型:
yType := reflect.TypeOf((*Y)(nil)).Elem()
然后使用表达式
reflect.TypeOf(x).Implements(yType)
检查类型是否实现接口(interface)。
接口(interface)本身不能被实例化。 interface{} 接口(interface)是一个空接口(interface),由所有类型实现,因此所有字段都实现它。
https://play.golang.org/p/gRfheIW_9Y
实际上它也适用于空接口(interface){}本身,但这将始终返回 true(如果我没有遗漏某些东西):
关于go - 如何使用反射来检查结构字段的类型是否为接口(interface){}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41694647/