Sobes.tech
Junior — Middle

Ako sa vykonáva výmena informácií medzi gorutinami v Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa výmena informácií medzi gorutinami vykonáva predovšetkým prostredníctvom kanálov (channels). Kanály umožňujú bezpečný prenos dát medzi gorutinami, zabezpečujú synchronizáciu a predchádzajú podmienkam súťaže.

Príklad použitia kanála:

ch := make(chan int)

// Odoslanie dát v gorutine
go func() {
    ch <- 42
}()

// Prijímanie dát v hlavnej gorutine
value := <-ch
fmt.Println(value) // Vytlačí 42

Kanály môžu byť s vyrovnávacou pamäťou alebo bez nej, čo ovplyvňuje správanie blokovania pri odosielaní a prijímaní dát. Okrem toho je možné použiť aj iné mechanizmy, ako zdieľané premenné s mutexmi, ale kanály sú hlavný idiomatický spôsob komunikácie v Go.