Sobes.tech
Middle

Wie löst man Panik aus, wenn man mit einem Kanal arbeitet? Was passiert bei Operationen mit einem nil-Kanal und einem geschlossenen Kanal?

sobes.tech KI

Antwort von AI

In Go tritt bei der Arbeit mit Kanälen in folgenden Fällen ein Panik auf:

  • Das Senden eines Werts an einen geschlossenen Kanal (chan <- value) verursacht eine Panik.
  • Das Schließen eines bereits geschlossenen Kanals (close(chan)) verursacht eine Panik.

Bezüglich nil-Kanälen:

  • Sende- und Empfangsoperationen mit nil-Kanälen blockieren dauerhaft (Deadlock), verursachen aber keinen Panik.

Beispiel:

var ch chan int // nil-Kanal

// <-ch // blockiert dauerhaft
// ch <- 1 // blockiert dauerhaft

ch = make(chan int)
close(ch)

// ch <- 1 // Panic: Senden auf geschlossenen Kanal

close(ch) // Panic: Schließen eines bereits geschlossenen Kanals