Sobes.tech
Senior

Go'da kanallar nedir ve ne işe yararlar? Hangi tür kanallar mevcuttur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go’daki kanallar, goroutine’ler arasında veri iletmek için bir mekanizmadır ve senkronizasyon ile bilgi alışverişini sağlar.

Ana özellikler:

  • Paralel olarak çalışan goroutine’ler arasında güvenli veri iletimine olanak tanır.
  • Kanal doluysa göndericiyi, boşsa alıcıyı engeller.

Kanal türleri:

  • İki yönlü (chan T): veri gönderebilir ve alabilir.
  • Sadece gönderim için (chan<- T): sadece veri gönderebilir.
  • Sadece alım için (<-chan T): sadece veri alabilir.

Kanal kullanım örneği:

ch := make(chan int) // iki yönlü kanal

// Goroutine içinde gönderim
go func() {
    ch <- 42
}()

// Alım
val := <-ch
fmt.Println(val) // 42

Kanal’lar, goroutine’ler arasındaki iletişimi ve senkronizasyonu kolaylaştırır, açık bloklamalara gerek kalmadan.