map1 := map[string]string{"name":"John","desc":"Golang"}
map2 := map[string]int{"apple":23,"tomato":13}
так, как проверить тип переменной является отображением в Go языке?Как проверить тип переменной является отображением в Go языке
map1 := map[string]string{"name":"John","desc":"Golang"}
map2 := map[string]int{"apple":23,"tomato":13}
так, как проверить тип переменной является отображением в Go языке?Как проверить тип переменной является отображением в Go языке
Вы можете использовать функцию reflect.ValueOf(), чтобы получить значение этих карт , а затем получить Вид из значения, который имеет запись в карте (reflect.Map
).
http://play.golang.org/p/5AUKxECqNA
http://golang.org/pkg/reflect/#Kind
Вот конкретный пример, который делает сравнение с 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\n", map1, reflect.ValueOf(map1).Kind() == reflect.Map)
fmt.Printf("%v is a map? %v\n", map2, reflect.ValueOf(map2).Kind() == reflect.Map)
fmt.Printf("%v is a map? %v\n", slice1, reflect.ValueOf(slice1).Kind() == reflect.Map)
}
печатает:
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
Если вы хотите узнать более конкретный тип карты, вы можете использовать reflect.TypeOf():
Обратите внимание, что Go имеет статическую типизацию. Если вы объявляете map1 и map2, как и в вашем примере кода, они всегда будут картой. – fuz