Глава 12 — Карты

Карты (словари, хеш-карты). Инициализировать карту можно буквально или с помощью функции make.

// maps a string to an int m := make(map[string]int) n := map[string]int{«foo»: 1, «bar»: 2}

Мы получаем доступ к карте (с помощью ключа) и вставляем/обновляем значения, как показано ниже:

m[«k1»] = 7

Мы можем удалить ключ методом delete.

delete(m, «key1»)

Мы можем получить размер карты, используя метод len, то есть len(m).

Если мы обращаемся к несуществующему ключу, Go возвращает обнуленное значение. Есть 3 возможности, когда мы обращаемся к карте:

  • Ключ существует
  • Ключ не существует
  • Ключ существует с нулевым значением или Ключ не существует, и поэтому возвращается обнуленное значение (неоднозначно)

Чтобы избежать двусмысленности в третьем случае, мы используем этот синтаксис: elem , ok := m[key]. Возвращаемая переменная ok является логическим типом, который указывает, присутствовал ли ключ или нет.

В нем нет порядка, итерация по карте не гарантирует какого-либо определенного порядка.

При передаче карт функции передается указатель карты. Изменение карты внутри функции изменит исходную карту.

Диапазон работы

Ключевое слово range используется для перебора срезов и карт. Операция диапазона возвращает два значения для каждой итерации: первое — это индекс, а второе — элемент с этим индексом.

nums := []int{1, 2, 3, 4} sum := 0 // here we have ignored the first return value, the index for _, num := range nums { sum += num } kvs := map[string]string{«a»: «apple», «b»: «banana»} for k, v := range kvs { fmt.Printf(«%s -> %sn», k, v) }

Упражнение!

Создайте карту, выполните итерацию по ней с помощью операции диапазона и распечатайте их на консоли.

Первоначально опубликовано на https://rightfrombasics.com 29 декабря 2018 г.

Источник: ledsshop.ru

Стиль жизни - Здоровье!