Menu
Coddy logo textTech

Сравнение карт

Часть раздела Логика и управление потоком путешествия по 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")
}

Тем не менее, вы можете безопасно сравнивать map с nil:

var myMap map[string]int
if myMap == nil {
    fmt.Println("Map is nil")
}

Когда вам нужно проверить, содержат ли две карты одинаковые пары «ключ-значение», вам необходимо написать пользовательскую функцию, которая перебирает обе карты и сравнивает каждый элемент по отдельности. Этот подход дает вам полный контроль над логикой сравнения, позволяя точно определить, что именно означает «равно» для вашего конкретного случая использования.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Шпаргалка

Карты нельзя сравнивать напрямую с помощью оператора ==, за исключением сравнения с 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")
}

Чтобы проверить, равны ли две карты, вы должны написать пользовательскую функцию, которая перебирает обе карты и сравнивает каждый элемент по отдельности.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком