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.