Ответ
При переполнении стека горутины Go автоматически увеличивает его размер. По умолчанию стек начинается с 2 КБ и динамически растет (или уменьшается) по мере необходимости.
Если системе не хватает памяти для расширения стека, программа завершится с ошибкой fatal error: stack overflow.
Пример:
func infiniteRecursion() {
infiniteRecursion()
}
func main() {
infiniteRecursion() // приведет к stack overflow
}
Особенности:
- В отличие от некоторых языков, в Go стек горутины не фиксированного размера
- Каждое новое выделение стека примерно в 2 раза больше предыдущего
- Минимальный размер стека - 2KB, максимальный зависит от системы