nil-срез это валидное значение с len == 0 и cap == 0. Когда вызывается
append(), Go сам выделяет новую память под капотом. Явная инициализация не нужна.var a []int
a = append(a, 4, 5, 6) // Go выделяет память сам
fmt.Println(a) // [4 5 6]
nil-мапа не инициализирована, у неё нет памяти для хранения данных. Любая попытка записи немедленно вызывает панику в рантайме. Перед использованием нужно явно вызвать
make.var m map[int]int
// m[1] = 1 ← паника!
m = make(map[int]int)
m[1] = 1 // теперь работает
append это функция, которая сама управляет памятью и возвращает новый срез. Мапа же это указатель на структуру данных, и без инициализации этой структуры просто не существует.🐸 Библиотека Go для собеса