Sobes.tech
Junior — Middle

Lehet adatokat küldeni egy nil értékű csatornára?

sobes.tech MI

Válasz az MI-től

Go nyelven nem lehet adatot küldeni egy nil csatornára. A nil csatornára való érték küldése örökre blokkolja a goroutine-t, mivel ilyen csatorna nincs inicializálva, és nem fogad adatokat.

Példa:

var ch chan int // ch == nil

go func() {
    ch <- 1 // örökre blokkolódik
}()

// a program megakad

A blokkolás elkerülése érdekében a csatornát inicializálni kell használat előtt:

ch := make(chan int)
ch <- 1 // helyesen működik

Ha a csatorna nil lehet, küldés előtt ellenőrizze az értékét, vagy használjon select-et default-tal a blokkolás elkerülése érdekében.