Какие данные попадают в кучу

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

Ответ

В Go (Golang) данные попадают в кучу (heap) в следующих случаях:

  1. Когда их размер неизвестен во время компиляции (например, создание среза с динамическим размером через make).
  2. Когда данные должны пережить функцию, в которой были созданы (например, возврат указателя из функции).
  3. Когда данные используются за пределами текущего стека (например, передача в горутины или сохранение в глобальных переменных).

Пример:

func createSlice() *[]int {
    s := make([]int, 10) // выделяется в куче, так как возвращается указатель
    return &s
}

func main() {
    p := createSlice() // данные из кучи доступны после вызова функции
}