В коде используются горутины для вывода значений i. Что выведется? Отвечать на этот вопрос надо так: вывод недетерменирован. Это, если кратко, а подробный ответ будет таким: Когда основная горутина - функция main запускает горутину с анонимной функцией, она не ждет, пока та завершится, и продолжает свое выполнение. В большинстве случаев, вывод будет пустым, так как main закончит выполнение до запуска горутин из цикла. Исправляем: 1. В 9 строке создали экземпляр WaitGroup для синхронизации горутин. WaitGroup используем для гарантии, что все горутины завершат свою работу до того, как завершится main. 2. С помощью wg.Add(5), установили счетчик WaitGroup на 5. У нас ведь 5 горутин. 3. В цикле запустили 5 горутин. В каждой использовали wg.Done(), который уменьшает счетчик WaitGroup на 1. Использование defer гарантирует, что wg.Done() будет вызвано при любом завершении функции, независимо от того, произошла ошибка или нет. 4. В конце вызвали wg.Wait(). Это блокирует выполнение программы д