Ответ
Размер стека в Go фиксирован для каждой горутины и по умолчанию составляет 2 КБ (может меняться в зависимости от версии Go и ОС). При вызове функций стек растёт, при возврате из функций — уменьшается. Если стек переполняется, Go автоматически выделяет новый стек большего размера и копирует туда данные. Это называется "stack growing".
Пример:
func recursive(n int) {
if n == 0 { return }
recursive(n-1)
}
func main() {
recursive(10000) // Будет несколько расширений стека
}