Что отобразится в консоли при выполнении примера №28

Гарантированного вывода нет: main не ждёт горутины и может завершиться без единой строки. Семантика захваченного i дополнительно зависит от версии языка Go.

Короткий ответ

Что ответить на собеседовании

Гарантированного вывода нет: main не ждёт горутины и может завершиться без единой строки. Семантика захваченного i дополнительно зависит от версии языка Go.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какой вывод будет получен после запуска следующей программы:

import (
        "fmt"
        )

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

Ответ

Гарантированного вывода нет: main не ждёт горутины и может завершиться без единой строки. Семантика захваченного i дополнительно зависит от версии языка Go.

Для Go 1.22+ при таком объявлении каждая итерация имеет своё i, но порядок печати 0–4 остаётся произвольным. При старой семантике переменная общая и возникает гонка; популярный ответ «пять пятёрок» не гарантирован. Передавайте i аргументом и используйте WaitGroup, если нужно дождаться всех строк. Для строгого порядка печатайте синхронно или отдельно упорядочивайте результаты.

Источник: go.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее