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.