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