Карты (maps) в GO

НАВИГАЦИЯ ПО СТРАНИЦЕ

Создание карты Доступ к элементам карты удаление элементов карты Проверка наличия ключа
ПОЛНЫЙ ОТВЕТ
БЕЗ ВОДЫ
Без воды — краткий вариант ответа,
легко понять и запомнить

Карты (maps) в GO — это встроенные структуры данных, представляющие собой коллекции ключ-значение. Каждый элемент карты состоит из уникального ключа и связанного с ним значения. Давайте рассмотрим основные аспекты использования карт в GO.

Создание карты

Карты создаются с использованием встроенной функции make или с использованием сокращенного литерала карты.

  1. Создание карты с использованием make:

    package main
    
    import "fmt"
    
    func main() {
        // Создание карты с использованием make
        ages := make(map[string]int)
        ages["Alice"] = 30
        ages["Bob"] = 25
    
        fmt.Println(ages)  // Вывод: map[Alice:30 Bob:25]
    }
  2. Создание карты с использованием литерала:

    package main
    
    import "fmt"
    
    func main() {
        // Создание карты с использованием литерала
        ages := map[string]int{
            "Alice": 30,
            "Bob":   25,
        }
    
        fmt.Println(ages)  // Вывод: map[Alice:30 Bob:25]
    }

Доступ к элементам карты

Для доступа к значению по ключу используется синтаксис map[key]. Если ключа нет в карте, то будет возвращено значение по умолчанию для данного типа.

package main

import "fmt"

func main() {
    ages := map[string]int{
        "Alice": 30,
        "Bob":   25,
    }

    // Доступ к значениям карты
    fmt.Println(ages["Alice"])  // Вывод: 30
    fmt.Println(ages["Charlie"])  // Вывод: 0 (значение по умолчанию для int)
}

Изменение и удаление элементов карты

package main

import "fmt"

func main() {
    ages := map[string]int{
        "Alice": 30,
        "Bob":   25,
    }

    // Изменение значения по ключу
    ages["Alice"] = 31

    // Добавление нового элемента
    ages["Charlie"] = 35

    fmt.Println(ages)  // Вывод: map[Alice:31 Bob:25 Charlie:35]

    // Удаление элемента по ключу
    delete(ages, "Bob")

    fmt.Println(ages)  // Вывод: map[Alice:31 Charlie:35]
}

Проверка наличия ключа

Чтобы проверить, существует ли ключ в карте, можно использовать два значения при получении значения по ключу. Второе значение равно true, если ключ существует, и false в противном случае.

package main

import "fmt"

func main() {
    ages := map[string]int{
        "Alice": 30,
        "Bob":   25,
    }

    // Проверка наличия ключа
    age, exists := ages["Alice"]
    fmt.Println(age, exists)  // Вывод: 30 true

    age, exists = ages["Charlie"]
    fmt.Println(age, exists)  // Вывод: 0 false
}

Карты предоставляют эффективный способ хранения и доступа к данным по ключу. Они широко используются в GO для различных задач, где требуется быстрый доступ к данным.