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

Метод reflect.Value.MapIndex

Метод reflect.Value.MapIndex позволяет получить значение элемента карты по указанному ключу. Он возвращает reflect.Value, представляющее значение, связанное с ключом. Если ключ отсутствует в карте, метод возвращает нулевое значение reflect.Value (его метод IsValid вернет false). Первым параметром метод принимает ключ в виде reflect.Value, а возвращает reflect.Value — значение по этому ключу.

Синтаксис

value := mapValue.MapIndex(keyValue)

Пример

Давайте получим значение из карты по ключу "name":

package main import ( "fmt" "reflect" ) func main() { m := map[string]int{ "age": 25, "year": 2023, } val := reflect.ValueOf(m) key := reflect.ValueOf("age") res := val.MapIndex(key) if res.IsValid() { fmt.Println(res.Int()) } else { fmt.Println("key not found") } }

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

25

Пример

Давайте попробуем получить значение по несуществующему ключу:

package main import ( "fmt" "reflect" ) func main() { m := map[string]int{ "age": 25, } val := reflect.ValueOf(m) key := reflect.ValueOf("city") res := val.MapIndex(key) if res.IsValid() { fmt.Println(res.Int()) } else { fmt.Println("key not found") } }

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

key not found

Пример

Давайте используем карту со сложным типом ключа (структура):

package main import ( "fmt" "reflect" ) type Point struct { X, Y int } func main() { m := map[Point]string{ {1, 2}: "first", {3, 4}: "second", } val := reflect.ValueOf(m) key := reflect.ValueOf(Point{1, 2}) res := val.MapIndex(key) if res.IsValid() { fmt.Println(res.String()) } }

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

first

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

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