Menu
Coddy logo textTech

Проверка существования ключа

Часть раздела Основы путешествия по 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
challenge icon

Задание

Новичок

В этом испытании вы попрактикуетесь в проверке существования ключа в карте. У вас есть карта оценок студентов, и вам нужно проверить, существует ли в этой карте оценка конкретного студента.

Допишите код, чтобы проверить, существует ли студент '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)
	}
}
quiz iconПроверьте себя

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

Все уроки раздела Основы