Sobes.tech
Junior — Middle

Jak se současně čte data z více vláken nebo kanálů?

sobes.tech AI

Odpověď od AI

V jazyce Go se pro současné čtení z více kanálů používá operátor select. Umožňuje čekat na data z několika kanálů a reagovat na první dostupné.

Příklad:

ch1 := make(chan int)
ch2 := make(chan int)

go func() { ch1 <- 1 }()
go func() { ch2 <- 2 }()

select {
case val := <-ch1:
    fmt.Println("Přijato z ch1:", val)
case val := <-ch2:
    fmt.Println("Přijato z ch2:", val)
}

Tímto způsobem se select zablokuje, dokud nebude v jednom z kanálů data, a poté provede odpovídající případ. To umožňuje efektivně zpracovávat více datových toků současně.