Junior — Middle
Nil dəyərinə malik olan kanala məlumat göndərmək mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, kanal nil olarsa, məlumat göndərmək mümkün deyil. nil-kanala dəyər göndərməyə cəhd etmək, goroutine-in həmişəlik bloklanmasına səbəb olacaq, çünki belə bir kanal başlanğıcda yaradılmayıb və məlumat qəbul edə bilməz.
Nümunə:
var ch chan int // ch == nil
go func() {
ch <- 1 // həmişəlik bloklanır
}()
// proqram donacaq
Bloklamanın qarşısını almaq üçün, kanaldan istifadə etməzdən əvvəl onu initialize etmək lazımdır:
ch := make(chan int)
ch <- 1 // düzgün işləyir
Əgər kanal nil ola bilərsə, göndərməzdən əvvəl onun dəyərini yoxlamaq və ya bloklamanın qarşısını almaq üçün select ilə default istifadə etmək tövsiyə olunur.