Sobes.tech
Middle+

hoofd pakket importeer "tijd" func werker() kanaal van int { ch := make(chan int) go func() { tijd.Sleep(3 * tijd.Sekunde) ch <- 42 }() return ch } func main() { timeStart := time.Now() _, _ = <-werker(), <-werker() println(int(time.Since(timeStart).Seconds())) // }

sobes.tech AI

Antwoord van AI

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

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

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

Вывод:

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

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

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

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