Back to questions
Senior
6
Что выведет программа? Почему? ```go func main() { timeStart := time.Now() _, _ = <-worker(), <-worker() println(int(time.Since(timeStart).Seconds())) } func worker() chan int { ch := make(chan int) go func() { time.Sleep(3 * time.Second) ch <- 1 }() return ch } ```
Companies where asked
Озон банк
Answer from AI
sobes.tech AI
Программа выведет 3.
Объяснение:
- Функция
worker()создаёт каналchи запускает горутину, которая засыпает на 3 секунды, затем отправляет в канал число 1. - В
mainвызывается<-worker()дважды, то есть создаются две независимые горутины, каждая из которых спит 3 секунды и отправляет значение в свой канал. - Оператор
_, _ = <-worker(), <-worker()последовательно читает из двух каналов, но оба канала уже запущены параллельно, и обе горутины спят одновременно. - Таким образом, общее время ожидания — примерно 3 секунды, а не 6.
Вывод println(int(time.Since(timeStart).Seconds())) преобразует прошедшее время в секунды и выводит целое число, поэтому результат — 3.