Ответ
Нулевое значение для типа map
в Go — это nil
. Работа с nil
map имеет ключевые особенности, которые важно знать:
-
Запись в
nil
map вызывает панику. Это одна из самых частых причин паники во время выполнения программы.// Неправильно: вызовет панику var m map[string]int m["key"] = 42 // panic: assignment to entry in nil map
-
Чтение из
nil
map безопасно и не вызывает панику. При чтенииnil
map ведет себя как пустая map: возвращается нулевое значение для типа значения, а второй параметр (ok) будетfalse
.var m map[string]int value, ok := m["key"] // Паники нет. value будет 0 (нулевое значение для int), ok будет false. fmt.Printf("Value: %d, OK: %vn", value, ok)
Как правильно инициализировать map?
Перед записью в map её необходимо инициализировать с помощью make()
или литерала map.
// 1. С помощью make()
m1 := make(map[string]int)
m1["key"] = 42
// 2. С помощью литерала
m2 := map[string]int{}
m2["key"] = 42
Вывод: Всегда инициализируйте map перед записью. Чтение из nil
map безопасно, но всегда возвращает нулевое значение.