Все три числа будут получены при корректном ожидании, но порядок между независимыми отправителями заранее не определён. Канал не сортирует значения по номеру goroutine.
Гарантирует ли канал порядок полученных чисел
Все три числа будут получены при корректном ожидании, но порядок между независимыми отправителями заранее не определён. Канал не сортирует значения по номеру goroutine.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Go-программа запускает три goroutines, каждая отправляет своё число 1, 2 или 3 в один канал. Main получает три значения и печатает их. Каким будет порядок?
Ответ
Все три числа будут получены при корректном ожидании, но порядок между независимыми отправителями заранее не определён. Канал не сортирует значения по номеру goroutine.
Если нужен порядок 1, 2, 3, передавайте вместе с результатом индекс и собирайте их в упорядоченное хранилище перед выводом. Буфер канала влияет на блокировки, но не создаёт желаемую последовательность запуска отправителей. Не используйте time.Sleep как доказательство порядка; задайте синхронизацию явно.