Гарантирует ли канал порядок полученных чисел

Все три числа будут получены при корректном ожидании, но порядок между независимыми отправителями заранее не определён. Канал не сортирует значения по номеру goroutine.

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

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

Все три числа будут получены при корректном ожидании, но порядок между независимыми отправителями заранее не определён. Канал не сортирует значения по номеру goroutine.

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

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

Условие

Go-программа запускает три goroutines, каждая отправляет своё число 1, 2 или 3 в один канал. Main получает три значения и печатает их. Каким будет порядок?

Ответ

Все три числа будут получены при корректном ожидании, но порядок между независимыми отправителями заранее не определён. Канал не сортирует значения по номеру goroutine.

Если нужен порядок 1, 2, 3, передавайте вместе с результатом индекс и собирайте их в упорядоченное хранилище перед выводом. Буфер канала влияет на блокировки, но не создаёт желаемую последовательность запуска отправителей. Не используйте time.Sleep как доказательство порядка; задайте синхронизацию явно.

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

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

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

Подробнее