Özet - Select
- Go kursu
- Orta seviye
- Ders 18/80
- 4 dk
select, timeout ve close'u birleştirerek bir zamanlayıcı yazarsın.
Özet - Select
Bu bölümde select'i öğrendin:
- select ile çoklu channel bekleme ve adil seçim
- default ile non-blocking davranış ve olay döngüsü
- time.After ile timeout ve sonsuz beklemeyi önleme
- close ile channel kapatma ve range bitirme
Şimdi bu kavramları birleştirerek bir zamanlayıcı yazacaksın: select, timeout ve close birlikte çalışsın.
Uygulama Zamanlayıcı yaz
main içine bir select { case ... default: ... } bloğu ve fmt.Println ile zamanlayıcı 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)
select {
case m := <-ch:
fmt.Println(m)
default:
fmt.Println("zamanlayıcı")
}
}Beklenen çıktı
zamanlayıcı
Uygulama Zamanlayıcı çıktısı
main içine fmt.Println ile select scheduler yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func main() {
fmt.Println("select scheduler")
}Beklenen çıktı
select scheduler
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 select kullanımı
select {
case v := <-ch:
fmt.Println(v)
____:
fmt.Println("zaman aşımı")
}
select {
case v := <-ch:
fmt.Println(v)
case <-time.After(1e9):
fmt.Println("zaman aşımı")
}
Açıklama: time.After channel döndürür, case onu bekler.
2 Bölüm kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
select |
Çoklu bekleme |
default |
Non-blocking |
time.After |
Timeout |
close |
Kapatma |