Sobes.tech
Senior

Какво се случва при запис в неинициализиран (nil) канал?

sobes.tech AI

Отговор от AI

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

Пример:

var ch chan int // ch == nil

func main() {
    ch <- 1 // блокира завинаги, тъй като каналът е nil
}

Това поведение понякога се използва за динамично включване/изключване на канали в select, тъй като операциите с nil-канал никога не се изпълняват и блокират горутината.