Метод reflect.Type.Key
Метод reflect.Type.Key возвращает тип ключа для типа map.
Этот метод полезен при работе с отражением, когда необходимо
динамически определить тип ключа карты. Если вызвать метод
на типе, который не является map, метод вернет nil.
Метод принимает нуль параметров и возвращает значение типа
reflect.Type.
Синтаксис
func (t Type) Key() Type
Пример
Давайте получим тип ключа для map с ключами типа string:
package main
import (
"fmt"
"reflect"
)
func main() {
var m map[string]int
t := reflect.TypeOf(m)
keyType := t.Key()
fmt.Println(keyType)
}
Результат выполнения кода:
"string"
Пример
Получим тип ключа для map с ключами типа int:
package main
import (
"fmt"
"reflect"
)
func main() {
var m map[int]bool
t := reflect.TypeOf(m)
keyType := t.Key()
fmt.Println(keyType)
}
Результат выполнения кода:
"int"
Пример
Попробуем вызвать метод на типе, который не является map:
package main
import (
"fmt"
"reflect"
)
func main() {
var s []int
t := reflect.TypeOf(s)
keyType := t.Key()
if keyType == nil {
fmt.Println("keyType is nil")
}
}
Результат выполнения кода:
"keyType is nil"
Пример
Используем метод Key вместе с методом Kind
для проверки типа ключа:
package main
import (
"fmt"
"reflect"
)
func main() {
var m map[string]float64
t := reflect.TypeOf(m)
keyType := t.Key()
if keyType.Kind() == reflect.String {
fmt.Println("Key type is string")
}
}
Результат выполнения кода:
"Key type is string"
Смотрите также
-
метод
reflect.Type.Elem,
который возвращает тип элемента для slice, array, ptr, chan или map -
функцию
reflect.TypeOf,
которая возвращает тип переданного значения -
метод
reflect.Type.Kind,
который возвращает категорию типа -
метод
reflect.Value.MapIndex,
который возвращает значение элемента map по ключу