Sobes.tech
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.