Сравнение карт
Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 29 из 68.
В отличие от многих других типов данных в Go, у карт есть особое ограничение: их нельзя напрямую сравнивать с помощью оператора ==. Единственное исключение из этого правила — сравнение карты с nil.
Это означает, что такой код не скомпилируется:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// Это вызовет ошибку компиляции!
if map1 == map2 {
fmt.Println("Maps are equal")
}Однако карту можно безопасно сравнить с nil:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}Когда нужно проверить, содержат ли две карты одинаковые пары ключ-значение, необходимо написать пользовательскую функцию, которая проходит по обеим картам и сравнивает каждый элемент по отдельности. Такой подход даёт полный контроль над логикой сравнения и позволяет точно определить, что означает «равны» в вашем конкретном случае.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком
Оператор switch с `fallthrough`Выход из вложенных цикловПереход к следующей итерации конкретного циклаОператор `goto`Повторение: расширенное управление циклами4Проект: простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели-значенияПолучатели-указателиВыбор получателейМетоды и функцииПовторение: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картПовторение — счётчик частоты слов8Проект: простой складской учёт
Обзор проектаПроверка запасов3Интерфейсы (основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование типов интерфейсовПустой интерфейсУтверждения типовПереключатель типовПовторение — формы и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go