Junior — Middle
Kun je een voorbeeld geven van wanneer en hoe kanalen worden gebruikt voor het uitwisselen van gegevens tussen threads of goroutines?
sobes.tech AI
Antwoord van AI
In Go worden kanalen gebruikt voor veilige gegevensuitwisseling tussen goroutines, waardoor ze gesynchroniseerd kunnen worden en waarden kunnen worden doorgegeven.
Voorbeeld van het gebruik van een kanaal om nummers van de ene goroutine naar de andere te sturen:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // gegevens naar het kanaal sturen
time.Sleep(time.Millisecond * 500)
}
close(ch) // kanaal sluiten na het verzenden van alle gegevens
}
func consumer(ch chan int) {
for val := range ch { // gegevens uit het kanaal lezen
fmt.Println("Ontvangen:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Hier stuurt producer nummers naar het kanaal, en consumer leest ze. Kanalen zorgen voor een veilige gegevensoverdracht zonder dat mutexen of andere synchronisatie-mechanismen nodig zijn.