Sobes.tech
Junior — Senior
49

Коррекция замыкания и взаимодействие с планировщиком

Условие задачи

Необходимо поправить программу, чтобы она надёжно выводила числа от 0 до 9. После исправления следует объяснить, как внутри планировщика Go происходит распределение работы. Какие результаты выдаст приведённый фрагмент при запуске на Go 1.21? Как гарантировать, что на экран появятся все числа от 0 до 9? Охарактеризуйте, каким образом планировщик распределяет горутины и почему это связано с тем, как захватывается переменная цикла.

func main() {
    for idx := 0; idx < 10; idx++ {
        go func() {
            fmt.Println(idx)
        }()
    }
}