尽量不要使用
reflect。但是,如果您必须使用
reflect:
- 甲
reflect.Value
值具有Type()
函数,该函数返回一个reflect.Type
值。 - 如果该类型
Kind()
为reflect.Map
,则这reflect.Value
是map[T1]T2
某些类型T1和T2 的type值,其中T1是键类型,T2是元素类型。
因此,在使用时
reflect,我们可以像这样将片段分开:
func show(m reflect.Value) { t := m.Type() if t.Kind() != reflect.Map { panic("not a map") } kt := t.Key() et := t.Elem() fmt.Printf("m = map from %s to %sn", kt, et)}在Go
Playground上查看更完整的示例。(请注意,两个映射实际上都是nil,因此没有要枚举的键和值。)



