Veri alma
- Go kursu
- Orta seviye
- Ders 10/80
- 4 dk
<- 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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
v := ____ch
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 |