Back to questions
Middle+
3
package main import "time" func worker() chan int { ch := make(chan int) go func() { time.Sleep(3 * time.Second) ch <- 42 }() return ch } func main() { timeStart := time.Now() _, _ = <-worker(), <-worker() println(int(time.Since(timeStart).Seconds())) // }
Companies where asked
МВидео/эльдорадо
Answer from AI
sobes.tech AI
В данном коде функция worker запускает горутину, которая через 3 секунды отправляет число 42 в канал. В main происходит чтение из двух таких каналов подряд:
_, _ = <-worker(), <-worker()
Это означает, что сначала программа ждёт получения значения из первого канала (3 секунды), затем из второго (ещё 3 секунды), итого около 6 секунд.
Вывод:
println(int(time.Since(timeStart).Seconds())) // 6
Если цель — получить оба результата параллельно и ждать их одновременно, нужно читать из каналов параллельно, например:
ch1 := worker()
ch2 := worker()
_, _ = <-ch1, <-ch2
В этом случае общее время будет около 3 секунд, так как оба воркера работают одновременно.