Можно ли переиспользовать область памяти, ранее выделенную под слайс

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

Ответ

Да, можно. В Go слайс — это структура, содержащая указатель на массив, длину и ёмкость. При срезе слайса (s[:0]) можно "обнулить" длину, сохранив выделенную память. Это полезно для уменьшения аллокаций.

Пример:

s := make([]int, 0, 10) // выделяем память на 10 элементов
s = append(s, 1, 2, 3)  // используем часть
s = s[:0]               // "очищаем" слайс, но память остаётся
// теперь s снова можно использовать, не выделяя новую память

Важно: если исходный слайс был создан как срез большого массива, это может привести к утечке памяти, так как сборщик мусора не сможет освободить весь массив.