Карты (maps) в GO
НАВИГАЦИЯ ПО СТРАНИЦЕ
Карты (maps) в GO — это встроенные структуры данных, представляющие собой коллекции ключ-значение. Каждый элемент карты состоит из уникального ключа и связанного с ним значения. Давайте рассмотрим основные аспекты использования карт в GO.
Создание карты
Карты создаются с использованием встроенной функции make или с использованием сокращенного литерала карты.
Создание карты с использованием 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] }
Создание карты с использованием литерала:
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 для различных задач, где требуется быстрый доступ к данным.