Вопрос: Как работает escape analysis и когда значение уходит в heap?

Go Junior Без компании
Вопрос: Как работает escape analysis и когда значение уходит в heap?
Ответы
Компилятор решает, можно ли держать значение на стеке. Если указатель "убегает" за пределы функции (например, возвращается), объект может оказаться в heap. Пример: ```go package main type S struct{ N int } func makeS() *S { s := S{N: 1} return &s // s должен жить после выхода из makeS } func main() { _ = makeS() } ``` Это не "плохо" само по себе, но важно для производительности в горячих местах.