Sobes.tech
Senior

Čo sa stane pri zápise do neinicializovaného (nil) kanála?

sobes.tech AI

Odpoveď od AI

V Go, zápis do neinicializovaného (nil) kanálu spôsobí, že goroutine bude navždy zablokovaná, pretože nil-kanál nie je pripravený prijímať ani odosielať dáta.

Príklad:

var ch chan int // ch == nil

func main() {
    ch <- 1 // je navždy zablokované, pretože kanál je nil
}

Toto správanie sa niekedy používa na dynamické zapínanie/vypínanie kanálov v select, pretože operácie s nil-kanálom sa nikdy nevykonajú a blokujú goroutine.