Senior
Go-da kanallar nədir və nə üçün lazımdır? Hansı kanal növləri mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da kanallar, goroutine-lər arasında məlumatların ötürülməsi üçün mexanizmdir və sinxronizasiya və məlumat mübadiləsini təmin edir.
Əsas xüsusiyyətlər:
- Paralel işləyən goroutine-lər arasında təhlükəsiz şəkildə dəyərlər ötürməyə imkan verir.
- Kanal dolu olduqda göndərəni, boş olduqda isə qəbul edənini bloklayır.
Kanal növləri:
- İki istiqamətli (chan T): məlumat göndərmək və qəbul etmək mümkündür.
- Yalnız göndərmək üçün (chan<- T): yalnız məlumat göndərə bilər.
- Yalnız qəbul etmək üçün (<-chan T): yalnız məlumat qəbul edə bilər.
Kanal istifadəsi nümunəsi:
ch := make(chan int) // iki istiqamətli kanal
// Goroutine daxilində göndərmə
go func() {
ch <- 42
}()
// Qəbul
val := <-ch
fmt.Println(val) // 42
Kanallar, goroutine-lər arasında kommunikasiya və sinxronizasiyanı asanlaşdırır, açıq bloklamalara ehtiyac qalmadan.