Golang反映,如何获取地图值类型?

时间:2016-07-31 07:23:20

标签: go reflection

对于golang中的地图m,我们可以使用t.Key()简单地获取密钥类型。

但我想知道如何获取地图值类型?

当地图为空时,我们甚至无法使用v.MapIndex,任何想法?

m := map[string]int{}
t := reflect.TypeOf(m)
v := reflect.ValueOf(m)
t.Key()
v.MapIndex()

2 个答案:

答案 0 :(得分:11)

地图类型的

Elem()将为您提供元素的类型:

var m map[string]int
fmt.Println(reflect.TypeOf(m).Elem())
// output: int

答案 1 :(得分:1)

下面是获取地图键和地图元素类型的示例:

package main

import (
    "fmt"
    "reflect"
)

func main() {
    fmt.Println("Hello, playground")
    var m map[string]int
    fmt.Println(reflect.TypeOf(m).Key())
    fmt.Println(reflect.TypeOf(m).Elem())
}

游乐场here

文档在这里https://golang.org/pkg/reflect/#Type