Sobes.tech
Junior — Middle

Kannst du ein Beispiel geben, wann und wie Kanäle zum Austausch von Daten zwischen Threads oder Goroutines verwendet werden?

sobes.tech KI

Antwort von AI

In Go werden Kanäle verwendet, um Daten sicher zwischen Goroutinen auszutauschen, sie zu synchronisieren und Werte zu übertragen.

Beispiel für die Verwendung eines Kanals zum Übertragen von Zahlen von einer Goroutine zur anderen:

package main

import (
    "fmt"
    "time"
)

func producer(ch chan int) {
    for i := 0; i < 5; i++ {
        ch <- i // Daten in den Kanal senden
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // Kanal nach dem Senden aller Daten schließen
}

func consumer(ch chan int) {
    for val := range ch { // Daten aus dem Kanal empfangen
        fmt.Println("Empfangen:", val)
    }
}

func main() {
    ch := make(chan int)
    go producer(ch)
    consumer(ch)
}

Hier sendet producer Zahlen in den Kanal, und consumer liest sie. Kanäle sorgen für eine sichere Datenübertragung ohne die Notwendigkeit von Mutexen oder anderen Synchronisationsmechanismen.