Sobes.tech
Junior — Middle

Wie organisiert man die Interaktion und Datenübertragung über Kanäle im System?

sobes.tech KI

Antwort von AI

In Go wird die Interaktion zwischen Goroutines häufig über Kanäle (channels) organisiert – typisierte Pipelines für die Datenübertragung.

Zur Datenübertragung wird ein Kanal mit make(chan Typ) erstellt. Goroutines können Daten in den Kanal mit dem Operator <- senden und auch Daten aus dem Kanal mit demselben Operator empfangen, was die Synchronisation gewährleistet.

Beispiel:

package main

import (
    "fmt"
    "time"
)

func producer(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i // Daten senden
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // Kanal schließen, um das Ende anzuzeigen
}

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)
}

Auf diese Weise ermöglichen Kanäle eine sichere und effiziente Datenübertragung zwischen Goroutines, wobei Race Conditions und Blockierungen vermieden werden.