Sobes.tech
Junior — Middle

Kann man Daten an einen Kanal senden, der den Wert nil hat?

sobes.tech KI

Antwort von AI

In Go kann man keine Daten an einen Kanal senden, wenn dieser nil ist. Der Versuch, einen Wert an einen nil-Kanal zu senden, führt dazu, dass die Goroutine dauerhaft blockiert, da dieser Kanal nicht initialisiert ist und keine Daten empfangen kann.

Beispiel:

var ch chan int // ch == nil

go func() {
    ch <- 1 // blockiert für immer
}()

// Programm hängt

Um eine Blockierung zu vermeiden, sollte der Kanal vor der Verwendung initialisiert werden:

ch := make(chan int)
ch <- 1 // funktioniert korrekt

Wenn der Kanal nil sein kann, sollte man vor dem Senden seinen Wert prüfen oder select mit default verwenden, um Blockierungen zu vermeiden.