Sobes.tech
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: изпращане към затворен канал