Да, что вы сделали, если тип ключа «точно» string
.
Но, например, если типом ключа будет пользовательский тип, имеющий string
в качестве базового типа, как в этом примере:
type mystr string
m := map[mystr]int{}
Тогда тип ключа не будет равен reflect.TypeOf("")
.
Это зависит от вас, если это то, что вы хотите. Если вы также хотите принять вышеуказанные типы карт, вы можете проверить вид ключа, если он равен reflect.String
, например:
if v.Type().Key() == reflect.TypeOf("") {
fmt.Print("It is string")
}
if v.Type().Key().Kind() == reflect.String {
fmt.Print("It is string kind")
}
Для вышеупомянутого map[mystr]int
это вывод (попробуйте на Go Playground ):
It is string kind
(Ключ не относится к типу string
, но имеет вид string
.)