Выбор ответа Junior Типы и нулевые значения спрашивают часто обновлено
Запись в nil-мапу в Go
Вопрос
Что произойдёт при выполнении кода?
var m map[string]int
m["a"] = 1
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: panic: assignment to entry in nil map. Нулевое значение мапы это nil.
Варианты ответа
- panic: assignment to entry in nil mapправильный ответ
- Мапа создастся автоматически, и в ней будет ключ "a"
- Ошибка компиляции: мапу нужно инициализировать
- Ничего: запись в nil-мапу молча игнорируется
Разбор
Нулевое значение мапы это nil. Читать из nil-мапы можно (вернётся нулевое значение), а запись вызывает panic во время выполнения. Компилятор это не ловит, потому что переменная могла быть присвоена где угодно. Автоматического создания, как у append для слайса, у мапы нет. Лечится m := make(map[string]int) или литералом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Нетипизированные константы произвольной точности
Следующий вопрос
Идиома полезного нулевого значения
Термины по теме
Ещё по теме «Типы и нулевые значения»
- Перевод числа между системами счисления на Go
- Права доступа битовой маской на Go
- Наименьший целый тип для суммы на Go
- Что выведет Go: преобразования чисел
- Что выведет Go: iota с выражением
- Что выведет Go: затенение переменной в if
- type A = B и type A B
- byte и rune