Middle+
Čo je kanál v Go? Na čo sa používajú kanály?
sobes.tech AI
Odpoveď od AI
V jazyku Go je kanál (channel) mechanizmus na prenos dát medzi gorutinami (ľahkými vláknami). Kanály zabezpečujú bezpečnú a synchronizovanú komunikáciu, umožňujúc gorutinám vymieňať si hodnoty bez použitia zdieľaných premenných a zámkov.
Kanály sa deklarujú s uvedením typu prenášaných dát, napríklad:
ch := make(chan int) // kanál na prenos celých čísel
Hlavné operácie s kanálmi:
- Odoslanie hodnoty:
ch <- value - Prijatie hodnoty:
value := <-ch
Kanály sa používajú na:
- Synchronizáciu gorútin
- Prenos dát medzi gorutinami
- Organizáciu pipelineov spracovania dát
Príklad:
package main
import (
"fmt"
"time"
)
func worker(ch chan int) {
for val := range ch {
fmt.Println("Prijaté:", val)
}
}
func main() {
ch := make(chan int)
go worker(ch)
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // zatvárame kanál, aby worker skončil
time.Sleep(time.Second)
}
V tomto príklade sa kanál používa na prenos čísel od hlavnej gorutiny k workeru, ktorý ich vypisuje.