Sobes.tech
Senior

Co se stane při zápisu do neinicializovaného (nil) kanálu?

sobes.tech AI

Odpověď od AI

V Go, zápis do neinicializovaného (nil) kanálu způsobí, že goroutine bude navždy zablokována, protože nil-kanál není připraven přijímat ani odesílat data.

Příklad:

var ch chan int // ch == nil

func main() {
    ch <- 1 // je navždy zablokováno, protože kanál je nil
}

Toto chování se někdy používá k dynamickému zapínání/vypínání kanálů v select, protože operace s nil-kanálem se nikdy nevykonají a blokují goroutine.