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:
-
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.
-
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.
- Kanallar yalnız göndərmək (
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.