Sobes.tech
Middle

Cum să declanșezi panica atunci când lucrezi cu un canal? Ce se întâmplă în timpul operațiilor cu un canal nil și un canal închis?

sobes.tech AI

Răspuns de la AI

În Go, panicul în lucrul cu canale apare în următoarele cazuri:

  • Trimiterea unei valori pe un canal închis (chan <- value) provoacă panic.
  • Închiderea unui canal deja închis (close(chan)) provoacă panic.

În ceea ce privește canalele nil:

  • Operațiile de trimitere și primire cu un canal nil se blochează pentru totdeauna (deadlock), dar nu provoacă panic.

Exemplu:

var ch chan int // canal nil

// <-ch // se blochează pentru totdeauna
// ch <- 1 // se blochează pentru totdeauna

ch = make(chan int)
close(ch)

// ch <- 1 // panic: trimitere pe canal închis

close(ch) // panic: închiderea unui canal deja închis