Sobes.tech
Senior

Mi történik, amikor egy nem inicializált (nil) csatornába írunk?

sobes.tech MI

Válasz az MI-től

Go-ban, egy nem inicializált (nil) csatornára írás örökre blokkolja a goroutine-t, mivel a nil-csatorna nem kész adat fogadására vagy küldésére.

Példa:

var ch chan int // ch == nil

func main() {
    ch <- 1 // örökre blokkolódik, mert a csatorna nil
}

Ez a viselkedés néha arra szolgál, hogy dinamikusan be- vagy kikapcsoljuk a csatornákat a select-ben, mivel a nil-csatornával végzett műveletek soha nem hajtódnak végre, és blokkolják a goroutine-t.