map1 := map[string]string{"name":"John","desc":"Golang"}
map2 := map[string]int{"apple":23,"tomato":13}
so,How to check variable type is map in Go language?
map1 := map[string]string{"name":"John","desc":"Golang"}
map2 := map[string]int{"apple":23,"tomato":13}
so,How to check variable type is map in Go language?
You can use the reflect.ValueOf() function to get the Value of those maps, and then get the Kind from the Value, which has a Map entry (reflect.Map
).
http://play.golang.org/p/5AUKxECqNA
http://golang.org/pkg/reflect/#Kind
Here's a more specific example that does the comparison with reflect.Map: http://play.golang.org/p/-qr2l_6TDq
package main
import (
"fmt"
"reflect"
)
func main() {
map1 := map[string]string{"name": "John", "desc": "Golang"}
map2 := map[string]int{"apple": 23, "tomato": 13}
slice1 := []int{1,2,3}
fmt.Printf("%v is a map? %v
", map1, reflect.ValueOf(map1).Kind() == reflect.Map)
fmt.Printf("%v is a map? %v
", map2, reflect.ValueOf(map2).Kind() == reflect.Map)
fmt.Printf("%v is a map? %v
", slice1, reflect.ValueOf(slice1).Kind() == reflect.Map)
}
prints:
map[name:John desc:Golang] is a map? true
map[apple:23 tomato:13] is a map? true
[1 2 3] is a map? false
If you want to know the more specific map type, you can use reflect.TypeOf():