Sobes.tech
Junior — Middle

Go dilində goroutine'lər arasında ünsiyyət üçün hansı növ kanallar istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, kanallar (channels) goroutinlər arasında əlaqə üçün istifadə olunur və müxtəlif növlərdə mövcuddur:

  1. Bufferli və buffersiz kanallar

    • Buffersiz kanal — göndərəni, alıcı dəyəri oxuyana qədər bloklayır.
    • Bufferli kanal — daxili sabit ölçülü bufferə malikdir və buffer dolana qədər bir neçə dəyəri bloklamadan göndərməyə imkan verir.
  2. Yönlü kanallar

    • Kanallar yalnız göndərmək (chan<- Type) və ya yalnız almaq (<-chan Type) üçün elan edilə bilər, bu da istifadəni məhdudlaşdırmağa və kodun təhlükəsizliyini artırmağa kömək edir.

Bufferli kanal yaratmaq və istifadə nümunəsi:

ch := make(chan int, 2) // 2 elementlik buffer

ch <- 1 // bloklamır
ch <- 2 // bloklamır
// ch <- 3 // buffer dolana qədər bloklayır

fmt.Println(<-ch) // 1
fmt.Println(<-ch) // 2

Beləliklə, Go dilində əsas kanal növləri bufferli/buffersiz və yönlü/çox yönlüdür.