2016-07-31 34 views
3

對於golang中的地圖m,我們可以簡單地使用t.Key()獲得關鍵類型。Golang反映,如何獲取地圖值類型?

但我不知道如何獲得地圖值類型?

當地圖爲空時,我們甚至無法使用v.MapIndex,有什麼想法?

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

請問你爲什麼要這麼做? Go有很強的輸入,這意味着類型是在編譯時確定的。因此,開發者應該清楚它是什麼類型。 – svenwltr

+0

因爲有時候我們需要反思。新的關鍵和價值,併爲每一對注入價值。 – navins

回答

5

地圖類型Elem()會給你的元素類型:

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