Что произойдет при работе с объектом типа Map, если перед его использованием не выполнить инициализацию через make или не присвоить значение прямо при объявлении?

В Go объект типа map при объявлении без инициализации (через make или присвоение значения) имеет значение nil.

Короткий ответ

Что ответить на собеседовании

В Go объект типа map при объявлении без инициализации (через make или присвоение значения) имеет значение nil. Попытка записать элемент в такой nil-map приведет к панике времени выполнения (runtime panic). Однако чтение из nil-map безопасно и просто вернет нулевое значение для типа значения.

Подробный разбор

Ответ с пояснениями

Условие

Что произойдет при работе с объектом типа Map, если перед его использованием не выполнить инициализацию через make или не присвоить значение прямо при объявлении?

Ответ

В Go объект типа map при объявлении без инициализации (через make или присвоение значения) имеет значение nil. Попытка записать элемент в такой nil-map приведет к панике времени выполнения (runtime panic). Однако чтение из nil-map безопасно и просто вернет нулевое значение для типа значения.

Пример:

var m map[string]int // m == nil

// Чтение безопасно:
fmt.Println(m["key"]) // Выведет 0

// Запись вызовет панику:
m["key"] = 10 // panic: assignment to entry in nil map

Поэтому перед использованием map для записи обязательно нужно инициализировать её, например:

m = make(map[string]int)

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее