Проверка существования ключа
Часть раздела Основы путешествия по GO на Coddy — урок 89 из 109.
В Go вы можете проверить наличие ключа в карте (map), используя форму присваивания с двумя значениями. Это важно, так как обращение к несуществующему ключу возвращает нулевое значение (zero value), что может ввести в заблуждение.
Создайте карту кодов стран:
countries := map[string]string{
"US": "United States",
"CA": "Canada",
}
// Проверьте, существует ли "UK" в карте
value, exists := countries["UK"]
fmt.Println("Value:", value, "Exists:", exists)Результат:
Value: Exists: falseЛогическое значение exists сообщает вам, был ли найден ключ. Используйте это в условных выражениях:
if _, exists := countries["US"]; exists {
fmt.Println("US is in the map")
}Результат:
US is in the mapЗадание
НовичокВ этом испытании вы попрактикуетесь в проверке существования ключа в карте. У вас есть карта оценок студентов, и вам нужно проверить, существует ли в этой карте оценка конкретного студента.
Допишите код, чтобы проверить, существует ли студент 'Emma' в карте grades, и выведите соответствующее сообщение.
Шпаргалка
Проверьте наличие ключа в карте (map), используя присваивание двух значений:
value, exists := mapName["key"]Второе значение — это логический тип (boolean), указывающий, был ли найден ключ:
countries := map[string]string{
"US": "United States",
"CA": "Canada",
}
value, exists := countries["UK"]
fmt.Println("Value:", value, "Exists:", exists)
// Вывод: Value: Exists: falseИспользуйте в условных операторах, игнорируя значение с помощью _:
if _, exists := countries["US"]; exists {
fmt.Println("US is in the map")
}Попробуйте сами
package main
import "fmt"
func main() {
// Карта оценок студентов
grades := map[string]int{
"John": 85,
"Sarah": 92,
"Mike": 78,
"Lisa": 95,
}
// Студент для проверки
studentToCheck := "Emma"
// TODO: Проверьте, существует ли studentToCheck в карте grades
// и сохраните результат в переменной с именем 'exists'
// Подсказка: используйте идиому comma-ok
// Вывод результата
if exists {
fmt.Printf("%s's grade exists in the map\n", studentToCheck)
} else {
fmt.Printf("%s's grade does not exist in the map\n", studentToCheck)
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решений9Указатели
Что такое указатель?Объявление переменных-указателейОператор взятия адресаРазыменование указателейИспользование указателей в функцияхНулевые указателиИтоги: Понимание указателей12Составные типы: Карты (Maps)
Введение в картыОбъявление литералов картСоздание карт с помощью `make`Добавление и обновление пар ключ-значениеДоступ к значениям картыПроверка существования ключаУдаление элементов картыДлина картыИтерация по картамИтоги: хранилище ключ-значение