英文:
find underlying type of custom type in golang
问题
你可以使用反射(reflect)包中的TypeOf
和Elem
方法来获取item
的底层类型。下面是一个示例代码:
package main
import (
"fmt"
"reflect"
)
type M map[string]interface{}
func main() {
var item M
fmt.Println(reflect.TypeOf(item).Elem())
}
这将输出map[string]interface {}
,即item
的底层类型。
英文:
type M map[string]interface{}
var item M
fmt.Println(reflect.TypeOf(item))
returns main.M
.
How can I find underlying type of item as map[string]interface{}
.
答案1
得分: 3
是的,如果你指的是“根类型”,你可以获取类型的精确结构:
var item M
t := reflect.TypeOf(item)
fmt.Println(t.Kind()) // map
fmt.Println(t.Key()) // string
fmt.Println(t.Elem()) // interface {}
从这里开始,你可以按照你的需求进行显示。
英文:
Yes, you can fetch the precise structure of the type, if that's what you mean with "root type":
var item M
t := reflect.TypeOf(item)
fmt.Println(t.Kind()) // map
fmt.Println(t.Key()) // string
fmt.Println(t.Elem()) // interface {}
From there you're free to display it as you want.
答案2
得分: 0
我不认为有一种现成的方法,但你可以手动构建底层类型:
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)
}
你可以通过上述代码手动构建底层类型。
英文:
I don't think there's an out-of-the-box way, but you can construct the underlying type by hand:
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)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论