cpp

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

Как вы уже знаете, если указанного ключа нет в словаре, то возвращается значение по умолчанию для типа значения:

dict := map[string]int{"a": 10, "b": 20}
fmt.Println(dict["c"]) // 0

Значение 0, никак не отличается от любого другого значения. Как же нам понять, существует ли элемент внутри словаря? Очень просто! Операция доступа по ключу на самом деле возвращает два значения. Через первое значение доступно значение существующего элемента или значение по умолчанию для типа при отсутствии элемента. Через второе значение доступно true, если элемент существует, и false — в противном случае:

dict := map[string]int{"a": 10, "b": 20}
n, ok := dict["a"]
fmt.Println(n, ok)  // 10 true
n2, ok := dict["c"]
fmt.Println(n2, ok) // 0 false

Пример проверки:

dict := map[string]int{"a": 10, "b": 20}
if n, ok := dict["a"]; ok {
   fmt.Println("Элемент существует. Значение:", n)
} else {
   fmt.Println("Элемент не существует")
} // Элемент существует. Значение: 10
if n, ok := dict["c"]; ok {
   fmt.Println("Элемент существует. Значение:", n)
} else {
   fmt.Println("Элемент не существует")
} // Элемент не существует

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp