Сравнение карт
Часть раздела Логика и управление потоком путешествия по 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Сравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go