Шаг 56.
Язык программирования Go.
Поиск в отображениях
На этом шаге рассмотрим организацию поиска в отображениях.
В языке Go имеются две операции поиска в отображениях, в каждой из которых используется оператор индексирования []. Рассмотрим пример:
Задание 1. Реализовать поиск некоторого значения в отображении, результаты представить в следующем виде (рис.1):
Рис.1. Пример работы приложения
Раскрыть/скрыть решение и комментарии.
populationForCity := map[string]int{"Германия": 28800000,
"Россия": 146804372, "Великобритания": 65808573, "Франция": 67024459}
fmt.Printf("%-20s\t%s\n", "Страна", "Население")
for city, population := range populationForCity {
fmt.Printf("%-20s\t%d\n", city, population)
}
//Первый способ поиска
population := populationForCity["Россия"]
fmt.Println("\nНаселение России ", population)
population = populationForCity["Китай"]
fmt.Print("\nНаселение Китая: ")
if population == 0 {
fmt.Println("Данные отсутствуют")
} else {
fmt.Println(population)
}
//Второй способ поиска
city := "Россия"
if population, found := populationForCity[city]; found {
fmt.Printf("\n%s - %d\n", city, population)
} else {
fmt.Printf("\n%s - нет данных\n", city)
}
//Третий способ поиска
city = "Япония"
_, present := populationForCity[city]
fmt.Printf("\n%q в отображении == %t\n", city, present)
Архив примера можно взять здесь.
Если выполняется поиск по ключу, присутствующему в отображении, возвращается соответствующее ему значение. Но если искомый
ключ отсутствует, возвращается нулевое значение данного типа.
Решение этой проблемы предлагает второй способ поиска. При использовании двух переменных в операции индексирования
отображений первой из них присваивается значение соответствующего ключа (или нулевое значение, если искомый ключ отсутствует
в отображении), а второй – значение true (или false, если искомый
ключ отсутствует). Это позволяет проверить наличие ключа в отображении. И как показывает третий пример, можно использовать
пустой идентификатор, чтобы отбросить значение, если требуется
всего лишь проверить наличие определенного ключа в отображении.
На следующем шаге рассмотрим изменение отображений в Go.
Предыдущий шаг
Содержание
Следующий шаг