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