Veri gönderme
- Go kursu
- Orta seviye
- Ders 9/80
- 4 dk
<- operatörüyle channel'a veri göndermeyi öğrenirsin.
Veri gönderme
Channel'a veri göndermek için <- operatörü kullanılır: ch <- 42. Bu, 42 değerini ch channel'ına gönderir. Tamponsuz channel'da alıcı hazır olana kadar bloklanır.
Gönderme ifadesi ch <- değer biçimindedir. Kanal solda, değer sağda, ok içeri doğrudur. Bloklanma, channel'ın senkronize çalışmasını sağlar.
Gönderme ve bloklanma
Tamponsuz channel'da gönderen, alıcı hazır olana kadar bloklanır. Bu, goroutine'ler arası el sıkışma (rendezvous) sağlar. Alıcı gelene kadar gönderen bekler.
Bu davranış senkronizasyon için kullanışlıdır: ch <- 1 yazan goroutine, başka bir goroutine <-ch yapana kadar ilerlemez. Böylece iki goroutine bir noktada buluşur.
Uygulama Channel'a gönder
main içine bir ch <- "gönderildi" ifadesi ve fmt.Println ile gönderildi 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 <- "gönderildi" }()
fmt.Println(<-ch)
}Beklenen çıktı
gönderildi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 ch <- 42 ifadesi ne yapar?
- 42'yi ch'ten alır
- 42'yi siler
- 42'yi karşılaştırır
- 42'yi ch'e gönderir Doğru cevap
Açıklama: Ok içeri doğru göndermeyi belirtir.
2 Gönderme ifadesi
ch ____ 42
ch <- 42
Açıklama: > ters yön, <= karşılaştırmadır.
3 Gönderme kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
ch <- v |
Gönderme |
<- |
Operatör |
bloklanma |
Bekleme |
alıcı |
Tüketici |