Sobes.tech
Senior

Co jsou kanály v Go a k čemu slouží? Jaké typy kanálů existují?

sobes.tech AI

Odpověď od AI

Kanály v Go jsou mechanismem pro přenos dat mezi gorutinami, který zajišťuje synchronizaci a výměnu informací.

Hlavní vlastnosti:

  • Umožňují bezpečný přenos hodnot mezi paralelně běžícími gorutinami.
  • Zajišťují blokování odesílatele, pokud je kanál plný, a příjemce, pokud je kanál prázdný.

Typy kanálů:

  • Obousměrné (chan T): mohou odesílat i přijímat data.
  • Pouze pro odesílání (chan<- T): mohou pouze odesílat data.
  • Pouze pro přijímání (<-chan T): mohou pouze přijímat data.

Příklad použití kanálu:

ch := make(chan int) // obousměrný kanál

// Odeslání v gorutině
go func() {
    ch <- 42
}()

// Přijímání
val := <-ch
fmt.Println(val) // 42

Kanály usnadňují komunikaci a synchronizaci mezi gorutinami, čímž se vyhýbají nutnosti explicitního blokování.