Типичный пример: for i := 0; i < 3; i++ { go func() { fmt.Println(i) }() }. До Go 1.22 — вывод 3, 3, 3 (closure захватывает одну переменную i). С Go 1.22+ — каждая итерация создаёт новую переменную, вывод 0, 1, 2 (в случайном порядке). Фикс для старых версий: go func(n int) { fmt.Println(n) }(i). Ещё подвох — без time.Sleep или WaitGroup main завершится раньше горутин и ничего не выведется. Два бага в одном вопросе.
Что выведет этот код с горутинами?
Middle
346 просмотровAFK Offer AI
Как работает stack growth в Go?