Middle+
При какви условия четенето от канал ще бъде блокирано завинаги? Какво се случва при запис в nil-канал? При запис в затворен канал?
sobes.tech AI
Отговор от AI
-
Четенето от канал ще бъде блокирано завинаги, ако каналът е празен и никой не възнамерява да пише в него (например, всички изпращачи са затворени или липсват).
-
Записът в nil-канал (канал, равен на nil) винаги се блокира завинаги, тъй като nil-каналът не е инициализиран и не може да приема данни.
-
Записът в затворен канал води до паника (panic) в Go, тъй като това е забранено и се счита за грешка по време на изпълнение.
Пример:
var ch chan int // nil-канал
// <-ch // четенето от nil-канал се блокира завинаги
// ch <- 1 // записът в nil-канал се блокира завинаги
ch = make(chan int)
close(ch)
// ch <- 2 // panic: изпращане към затворен канал