CodeBlanks Logo Icon CodeBlanks

Veri alma

<- ile channel'dan veri almayı öğrenirsin.

Veri alma

Channel'dan veri almak için de <- operatörü kullanılır: v := <-ch. Bu, ch'ten bir değer alır ve v'ye atar. Tamponsuz channel'da gönderen hazır olana kadar bloklanır.

Alma ifadesi v := <-ch biçimindedir. Ok channel'dan dışarı doğrudur. fmt.Println(<-ch) ile doğrudan yazdırabilirsin. Channel kapalıysa sıfır değer döner.

Alma ve bloklanma

Tamponsuz channel'da alan, gönderen hazır olana kadar bloklanır. Bu, channel'ı senkronizasyon aracı yapar: alıcı ve gönderici buluşana kadar ikisi de bekler.

v, ok := <-ch ile channel'ın açık/kapalı durumunu öğrenebilirsin. ok false ise channel kapatılmış ve boşalmıştır. Bu kalıp channel kapanışını algılamada kullanılır.

Uygulama Channel'dan al

main içine bir <-ch ifadesi ve fmt.Println ile alındı 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 <- "alındı" }()
    fmt.Println(<-ch)
}

Beklenen çıktı

alındı

Soru ve cevaplar

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

1 v := <-ch ifadesi ne yapar?

  • ch'i kapatır
  • ch'ten değer alır v'ye atar Doğru cevap
  • v'yi siler
  • v'yi ch'e gönderir

Açıklama: ch'ten değer alır v'ye atar.

2 Alma ifadesi

Soru
v := ____ch
Cevap
v := <-ch

Açıklama: Gönderme ve almada aynı operatör kullanılır.

3 Alma kavramlarını eşleştir

Kavram Anlamı
<-ch Alma
v, ok Durum kontrolü
bloklanma Bekleme
kapalı Sıfır değer

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