CodeBlanks Logo Icon CodeBlanks

Özet - Channel'lar

Channel kavramlarını birleştirerek işçi yazarsın.

Özet - Channel'lar

Bu bölümde channel'ları öğrendin:

  • make(chan T) ile channel oluşturma ve tipli iletişim
  • ch <- v ile güvenli veri gönderme ve bloklanma
  • <-ch ile veri alma ve durum kontrolü
  • Buffered channel ile tampon ve asenkron başlangıç

Şimdi bu kavramları birleştirerek bir worker yazacaksın: channel oluştur, goroutine başlat, veri al ve yazdır.

Uygulama Worker channel

main içine bir make(chan string) çağrısı ve fmt.Println ile worker tamam 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 <- "worker tamam" }()
    fmt.Println(<-ch)
}

Beklenen çıktı

worker tamam

Uygulama Worker çıktısı

main içine fmt.Println ile channel worker 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() {
    fmt.Println("channel worker")
}

Beklenen çıktı

channel worker

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Channel kullanımı

Soru
ch := make(chan string)
go func() {
    ch <- ____
}()
msg := <-ch
Cevap
ch := make(chan string)
go func() {
    ch <- "ok"
}()
msg := <-ch

Açıklama: <-ch almadır, gönderme değil.

2 Bölüm kavramlarını eşleştir

Kavram Anlamı
make(chan int) Oluşturma
ch <- v Gönderme
<-ch Alma
make(chan int, n) Tamponlu

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