CodeBlanks Logo Icon CodeBlanks

Channel nedir?

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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
ch := ____
ch <- 42
Cevap
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

Orta seviye bölümündeki tüm dersler