Функция reflect.MakeMap

Функция reflect.MakeMap создает новую карту (map) указанного типа во время выполнения программы. Она принимает один параметр - тип создаваемой карты, представленный объектом reflect.Type. Возвращает функция значение типа reflect.Value, содержащее ссылку на созданную пустую карту. Эта функция полезна, когда тип карты неизвестен на этапе компиляции и определяется динамически.

Синтаксис

goreflect.MakeMap(typ reflect.Type) reflect.Value

Пример

Давайте создадим карту с ключами типа string и значениями типа int:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  mapType := reflect.MapOf(reflect.TypeOf(""), reflect.TypeOf(0))
  mapValue := reflect.MakeMap(mapType)

  // Add elements to the map
  key := reflect.ValueOf("key1")
  value := reflect.ValueOf(42)
  mapValue.SetMapIndex(key, value)

  // Get element from the map
  key2 := reflect.ValueOf("key1")
  element := mapValue.MapIndex(key2)
  fmt.Println(element.Interface())
}

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

go42

Пример

Давайте создадим карту с ключами типа int и значениями типа string:

gopackage main

import (
  "fmt"
  "reflect"
)

func main() {
  mapType := reflect.MapOf(reflect.TypeOf(0), reflect.TypeOf(""))
  mapValue := reflect.MakeMap(mapType)

  // Add elements to the map
  key := reflect.ValueOf(1)
  value := reflect.ValueOf("one")
  mapValue.SetMapIndex(key, value)

  // Get element from the map
  key2 := reflect.ValueOf(1)
  element := mapValue.MapIndex(key2)
  fmt.Println(element.Interface())
}

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

go"one"

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

  • функцию reflect.MakeSlice,
    которая создает новый срез (slice) заданного типа
  • функцию reflect.MapOf,
    которая возвращает тип карты (map) на основе типов ключа и значения
  • функцию reflect.Type,
    которая представляет тип значения в системе отражения
  • функцию reflect.Value,
    которая представляет отраженное значение в системе отражения