在 golang 中查找自定义类型的底层类型

IT小君   2022-11-11T00:14:23
type M map[string]interface{}
var item M
fmt.Println(reflect.TypeOf(item))

返回main.M

我怎样才能找到项目的基础类型为map[string]interface{}.

点击广告,支持我们为你提供更好的服务
评论(2)
IT小君

是的,您可以获取类型的精确结构,如果这就是“根类型”的意思:

var item M
t := reflect.TypeOf(item)
fmt.Println(t.Kind()) // map
fmt.Println(t.Key())  // string
fmt.Println(t.Elem()) // interface {}

测试一下

从那里您可以随意显示它。

2022-11-11T00:14:23   回复
IT小君

我认为没有开箱即用的方式,但您可以手动构造底层类型:

type M map[string]interface{}
...
var m M
t := reflect.TypeOf(m)
if t.Kind() == reflect.Map {
    mapT := reflect.MapOf(t.Key(), t.Elem())
    fmt.Println(mapT)
}
2022-11-11T00:14:23   回复