Sobes.tech
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 секунд, так как оба воркера работают одновременно.