Junior — Middle
Ako zorganizovať interakciu a prenos dát cez kanály v systéme?
sobes.tech AI
Odpoveď od AI
V jazyku Go je interakcia medzi gorutinami často organizovaná cez kanály (channels), ktoré sú typované potrubia na prenos dát.
Na prenos dát sa vytvorí kanál pomocou make(chan Typ). Gorutiny môžu posielať dáta do kanála pomocou operátora <-, a tiež prijímať dáta z toho istého kanála, čo zabezpečuje synchronizáciu.
Príklad:
package main
import (
"fmt"
"time"
)
func výrobca(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i // odoslanie dát
time.Sleep(time.Millisecond * 500)
}
close(ch) // zatvoríme kanál, aby sme signalizovali koniec
}
func spotrebiteľ(ch <-chan int) {
for val := range ch { // prijímanie dát z kanála
fmt.Println("Prijaté:", val)
}
}
func main() {
ch := make(chan int)
go výrobca(ch)
spotrebiteľ(ch)
}
Týmto spôsobom kanály umožňujú bezpečný a efektívny prenos dát medzi gorutinami, čím sa predchádza podmienkam súťaže a blokovaniu.