Какая разница между zero value map и zero value слайса

«Какая разница между zero value map и zero value слайса» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Zero value map — это nil, и попытка записи в него вызовет панику. Перед использованием нужно инициализировать через make или литерал:

var m map[string]int // nil
m["key"] = 1         // panic: assignment to nil map
m = make(map[string]int) // OK

Zero value слайса — тоже nil, но его можно безопасно использовать с append (под капотом создастся новый массив). Однако прямое обращение по индексу вызовет панику:

var s []int        // nil
s = append(s, 42)  // OK
fmt.Println(s[0])  // panic: index out of range

Ключевое отличие: слайс поддерживает append в nil-состоянии, а map требует явной инициализации перед любыми операциями записи.