Какое ограничение размера стека в горутине

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

Ответ

По умолчанию размер стека горутины начинается с 2 КБ (на 64-битных системах) и может динамически расти до 1 ГБ (зависит от версии Go и ОС).

Если стек превышает лимит, происходит паника: stack overflow. Размер можно изменить через runtime/debug:

import "runtime/debug"

func main() {
    debug.SetMaxStack(4 * 1024 * 1024) // 4 MB
}

Важно:

  • Слишком маленький стек вызовет частые аллокации, слишком большой — расход памяти.
  • В большинстве случаев дефолтных значений хватает.