CodeBlanks Logo Icon CodeBlanks

Özet - Select

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

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)
    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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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ı

Soru
select {
case v := <-ch:
    fmt.Println(v)
____:
    fmt.Println("zaman aşımı")
}
Cevap
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

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