Компилятор анализирует живёт ли переменная дольше функции. Если нет — аллоцирует на стеке (бесплатно). Если да (escapes) — на heap (GC). Причины escape: возврат указателя, присваивание интерфейсу, отправка в канал, closure capture, слишком большой объект. go build -gcflags="-m" показывает решения. Оптимизация: передавать по значению, избегать interface{}.
Как работает escape analysis в Go?
Middle
186 просмотровAFK Offer AI
Что такое bounds check elimination?