Sobes.tech
Junior — Middle

Какво ще се случи, ако се опитате да прочетете данни от канал, който все още не е инициализиран?

sobes.tech AI

Отговор от AI

Ако се опитате да прочетете данни от канал в Go, който не е инициализиран (т.е. е nil), операцията по четене ще бъде блокирана завинаги. Това ще доведе до това, че горутината, която се опитва да чете от такъв канал, ще застане, тъй като каналът не съществува и не може да предава данни.

Пример:

var ch chan int // ch е nil

func main() {
    fmt.Println(<-ch) // блокира завинаги
}

За да избегнете това, каналът трябва да бъде инициализиран с make, например: ch := make(chan int).