Sobes.tech
Senior

Čo sú to kanály v Go a na čo slúžia? Aké typy kanálov existujú?

sobes.tech AI

Odpoveď od AI

Kanály v Go sú mechanizmom na prenos dát medzi gorutinami, ktorý zabezpečuje synchronizáciu a výmenu informácií.

Hlavné vlastnosti:

  • Umožňujú bezpečný prenos hodnôt medzi paralelne bežiacimi gorutinami.
  • Zabezpečujú blokovanie odosielateľa, ak je kanál plný, a príjemcu, ak je kanál prázdny.

Typy kanálov:

  • Dvojmo smerové (chan T): môžu odosielať aj prijímať dáta.
  • Len na odosielanie (chan<- T): môžu len odosielať dáta.
  • Len na prijímanie (<-chan T): môžu len prijímať dáta.

Príklad použitia kanála:

ch := make(chan int) // dvojmo smerový kanál

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

// Prijatie
val := <-ch
fmt.Println(val) // 42

Kanály uľahčujú komunikáciu a synchronizáciu medzi gorutinami, čím sa vyhýbajú potrebe explicitného blokovania.