Middle+
În ce condiții citirea dintr-un canal va fi blocată pentru totdeauna? Ce se întâmplă atunci când scrii într-un canal nil? Când scrii într-un canal închis?
sobes.tech AI
Răspuns de la AI
-
Citirea din canal va fi blocată pentru totdeauna dacă canalul este gol și nimeni nu intenționează să scrie în el (de exemplu, toți expeditorii sunt închiși sau absenti).
-
Scrierea într-un canal nil (un canal egal cu nil) este întotdeauna blocată pentru totdeauna, deoarece canalul nil nu este inițializat și nu poate primi date.
-
Scrierea într-un canal închis duce la panică (panic) în Go, deoarece acest lucru este interzis și considerat o eroare de execuție.
Exemplu:
var ch chan int // canal nil
// <-ch // citirea din canalul nil este blocată pentru totdeauna
// ch <- 1 // scrierea în canalul nil este blocată pentru totdeauna
ch = make(chan int)
close(ch)
// ch <- 2 // panic: trimitere pe canal închis