Junior — Middle
Můžeš uvést příklad, kdy a jak se používají kanály pro výměnu dat mezi vlákny nebo gorutinami?
sobes.tech AI
Odpověď od AI
V jazyce Go se kanály používají k bezpečné výměně dat mezi gorutinami, což umožňuje jejich synchronizaci a přenos hodnot.
Příklad použití kanálu k přenosu čísel z jedné gorutiny do druhé:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // odeslání dat do kanálu
time.Sleep(time.Millisecond * 500)
}
close(ch) // uzavření kanálu po odeslání všech dat
}
func consumer(ch chan int) {
for val := range ch { // příjem dat z kanálu
fmt.Println("Přijato:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Zde producer posílá čísla do kanálu a consumer je čte. Kanály zajišťují bezpečný přenos dat bez nutnosti použití mutexů nebo jiných synchronizačních mechanismů.