类型判断
概念说明
反射可以在运行时查看类型和值的信息。reflect.TypeOf 返回具体类型,Kind 返回类型所属的大类。
例如自定义类型 UserID 的 Type 是 main.UserID,但它的 Kind 可能是 int。
理解这点对反射判断非常重要。
语法/规则
- 使用
reflect.TypeOf(value)获取运行时类型。 - 使用
typ.Kind()获取类型大类。 Type更具体,Kind更抽象。- 空接口值为
nil时,reflect.TypeOf(nil)返回nil。 - 反射常用于框架、序列化、ORM 等通用逻辑中。
Type 与 Kind 示例
| |
输出结果:
| |
常见错误
- 把
Type和Kind混为一谈,导致判断自定义类型时出错。 - 对
nil直接调用reflect.TypeOf(nil).Kind(),会因为空指针 panic。 - 明明可以用普通类型断言解决,却使用反射让代码更难读。