Channel nedir?
- Go kursu
- Orta seviye
- Ders 7/80
- 4 dk
Channel'ın goroutine'ler arası iletişim aracı olduğunu öğrenirsin.
Channel nedir?
Bir channel, goroutine'ler arası iletişim ve senkronizasyon sağlayan tipli bir kanaldır. Bir goroutine channel'a veri gönderir, diğeri alır; Go bu aktarımı güvenli ve senkronize yapar.
Channel'lar paylaşılan bellek yerine mesajlaşmayı (communicate by sharing) tercih eden Go felsefesinin temelidir. make(chan int) ile oluşturulur.
Channel felsefesi
Go'nun ünlü sloganı şudur: paylaşılan bellekle iletişim kurma; bunun yerine iletişim kurarak paylaş. Channel bu felsefenin aracıdır.
Paylaşılan bir değişkene birden çok goroutine erişirse yarış oluşur. Channel ile veri tek goroutineden geçer ve senkronizasyon otomatik sağlanır. Bu, kilitsiz (lock-free) tasarımı mümkün kılar.
Uygulama Channel ile mesaj
main içine bir make(chan string) çağrısı ve fmt.Println ile channel hazır yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func main() {
ch := make(chan string)
go func() { ch <- "channel hazır" }()
fmt.Println(<-ch)
}Beklenen çıktı
channel hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Channel hangi amaçla kullanılır?
- Goroutine'ler arası iletişim Doğru cevap
- Değişken tanımlamak
- Döngü yazmak
- Hata yakalamak
Açıklama: goroutine'ler arası iletişim.
2 Channel oluşturma
ch := ____
ch <- 42
ch := make(chan int)
ch <- 42
Açıklama: new pointer döndürür, channel oluşturmaz.
3 Channel kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
channel |
İletişim kanalı |
make |
Oluşturma fonksiyonu |
<- |
Gönder/al operatörü |
chan |
Tip anahtar kelimesi |