Всегда ли создаётся структура под созданную горутину

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

Ответ

Нет, структура горутины (g) создаётся не всегда. Горутины работают на существующих потоках планировщика (M), которые могут переиспользовать уже созданные структуры. Go использует пул горутин для оптимизации производительности.

Пример:

func main() {
    for i := 0; i < 10; i++ {
        go func(n int) {
            fmt.Println(n)
        }(i)
    }
    time.Sleep(time.Second)
}

В этом случае планировщик может переиспользовать уже существующие структуры горутин из пула, а не создавать новые каждый раз. Это уменьшает накладные расходы на создание и уничтожение горутин.