РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1510 of 1593 menu

reflect.Value.MapKeys

Метод reflect.Value.MapKeys возвращает []reflect.Value, содержащий все ключи карты, на которую указывает приемник reflect.Value. Приемник должен иметь вид reflect.Map, иначе метод вызывает панику. Порядок ключей в возвращаемом срезе не детерминирован и зависит от реализации Go.

Синтаксис

func (v Value) MapKeys() []Value

Пример

Получим все ключи из карты с типом map[string]int:

package main import ( "fmt" "reflect" ) func main() { m := map[string]int{ "a": 1, "b": 2, "c": 3, } v := reflect.ValueOf(m) keys := v.MapKeys() for _, key := range keys { fmt.Println(key.Interface()) } }

Результат выполнения кода (порядок может отличаться):

"a" "b" "c"

Пример

Получим ключи из карты с типом map[int]string и преобразуем их в срез целых чисел:

package main import ( "fmt" "reflect" ) func main() { m := map[int]string{ 10: "ten", 20: "twenty", 30: "thirty", } v := reflect.ValueOf(m) keys := v.MapKeys() intKeys := make([]int, len(keys)) for i, key := range keys { intKeys[i] = int(key.Int()) } fmt.Println(intKeys) }

Результат выполнения кода (порядок может отличаться):

[10 20 30]

Пример

Попытка вызова MapKeys на значении, не являющемся картой, вызывает панику:

package main import ( "fmt" "reflect" ) func main() { defer func() { if r := recover(); r != nil { fmt.Println("Panic caught:", r) } }() s := []int{1, 2, 3} v := reflect.ValueOf(s) _ = v.MapKeys() // panic: reflect: call of MapKeys on slice Value }

Результат выполнения кода:

"Panic caught: reflect: call of MapKeys on slice Value"

Смотрите также

  • метод reflect.Value.MapIndex,
    который получает значение по ключу из карты
  • тип reflect.Kind,
    который используется для проверки вида значения
  • функцию reflect.ValueOf,
    которая создает reflect.Value из интерфейса
  • метод reflect.Value.Interface,
    который преобразует reflect.Value обратно в интерфейс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить