Отсутствующий ключ в Go
Если ключа нет, чтение возвращает нулевое значение
этого типа. Для целых это 0, для строк
пустая строка, для логического false.
Ошибки при чтении нет: программа просто получает
нуль нужного типа.
В карте с двумя людьми запросим ключ, который не записывали:
ages := map[string]int{"ann": 20, "bob": 30}
fmt.Println(ages["zoe"])
На экране 0, хотя "zoe" в карте
нет. То же сработает для объявленной без создания
карты: любое чтение дает нуль значения.
Для строк нулевое значение пустое:
labels := map[int]string{1: "one"}
fmt.Println(labels[2])
Ключ 2 не добавляли, вывод пустой строки.
Отличить «ключа нет» от «ключ есть, но значение
нулевое» одним чтением нельзя: в следующем уроке
разберем второй результат с именем ok.
Дана следующая карта:
room := map[string]int{"a": 1}
Выведите значение по "b" и скажите,
что появится на экране.
Дана следующая карта:
tag := map[string]string{"go": "lang"}
Прочитайте ключ "book" и выведите
длину полученной строки.
Почему нельзя по одному числу на экране понять, отсутствует ключ или записан ноль?