贝利信息

如何使用Golang反射判断变量类型_Golang reflect类型检测实用说明

日期:2026-01-04 00:00 / 作者:P粉602998670
最常用可靠的方式是用 reflect.TypeOf() 获取类型信息后通过 Kind() 判断底层类别:t.Kind() == reflect.String 判断字符串,t.Kind() == reflect.Ptr 判断指针,t.Kind() == reflect.Slice 判断切片;需区分自定义类型时结合 Name() 和 PkgPath() 精确匹配。

直接用 reflect.TypeOf() 获取类型信息,再通过比较 reflect.Type 或类型名做判断,是最常用也最可靠的方式。

用 reflect.TypeOf() 获取基础类型

传入变量(注意要传值或指针,不能传 nil 接口),返回 reflect.Type 对象:

判断是否为某具体类型(推荐用 Kind)

Kind() 返回底层基本类别(如 reflect.Int, reflect.String, reflect.Struct 等),比 Name() 更稳定,尤其对自定义类型或指针有效:

区分自定义类型和内置类型(用 Name() + PkgPath())

如果需要精确识别自定义类型(比如 type UserID int),可结合 Name()PkgPath()

安全判断接口变量的实际类型

对接口类型(如 interface{})做类型检测时,先确认非 nil,再反射:

基本上就这些。不复杂但容易忽略 Kind 和 Name 的区别,日常用 Kind 做通用判断,用 Name+PkgPath 做精确识别。