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.