Sobes.tech
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.