Sobes.tech
Middle+

paquete principal importar "tiempo" func trabajador() canal de int { ch := make(chan int) ir func() { time.Sleep(3 * time.Second) ch <- 42 }() return ch } func main() { timeStart := time.Now() _, _ = <-trabajador(), <-trabajador() println(int(time.Since(timeStart).Seconds())) // }

sobes.tech AI

Respuesta de la IA

В данном коде функция worker запускает горутину, которая через 3 секунды отправляет число 42 в канал. В main происходит чтение из двух таких каналов подряд:

_, _ = <-worker(), <-worker()

Это означает, что сначала программа ждёт получения значения из первого канала (3 секунды), затем из второго (ещё 3 секунды), итого около 6 секунд.

Вывод:

println(int(time.Since(timeStart).Seconds())) // 6

Если цель — получить оба результата параллельно и ждать их одновременно, нужно читать из каналов параллельно, например:

ch1 := worker()
ch2 := worker()
_, _ = <-ch1, <-ch2

В этом случае общее время будет около 3 секунд, так как оба воркера работают одновременно.