0Pricing
Go Academy · Ders

select Deyimi

Kanalları select ile çoklama

select Deyimi, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Seçim İfadesi Nedir?

select ifadesi, bir eşzamanlı rutinin birden fazla kanal işlemini aynı anda beklemesini sağlar. Kanallar için kullanılan bir switch gibi, ilerlemeye hazır olan ilk durumu seçer.

Temel Söz Dizimi

Bir select içindeki her case, kanal gönderme veya alma işlemidir:

select {
case msg := <-ch1:
    fmt.Println("ch1:", msg)
case msg := <-ch2:
    fmt.Println("ch2:", msg)
}

default ile Engellemesiz Çalışma

Bir default durumu eklemek seçimi engellemesiz hâle getirir; hiçbir kanal hazır değilse seçim hemen varsayılan duruma geçer.

select {
case v := <-ch:
    fmt.Println(v)
default:
    fmt.Println("no value ready")
}

Rastgele Seçim

Birden fazla durum aynı anda hazır olduğunda Go bunlardan birini rastgele seçer; hazır olan her durumun seçilme olasılığı eşittir. Bu, aç kalmayı önler.

Seçim İfadesinde Gönderme

Durumlar kanal gönderme işlemleri de olabilir. Bir gönderme durumu, kanalda arabellek alanı olduğunda (veya bekleyen bir alıcı bulunduğunda) hazırdır.

select {
case ch1 <- val1:
    fmt.Println("sent to ch1")
case ch2 <- val2:
    fmt.Println("sent to ch2")
}

Boş Seçim İfadesi Sonsuza Dek Engeller

Durumsuz bir select{}, geçerli eşzamanlı rutini sonsuza dek engeller. Bu, diğer eşzamanlı rutinler çalışırken ana eşzamanlı rutini canlı tutmak için sık kullanılan bir kalıptır.

func main() {
    go serve()
    select {} // block forever
}

Seçim İfadesiyle Döngü

Kanalları sürekli çoklamak için bir select ifadesini for döngüsünün içine yerleştirin. Temiz biçimde çıkmak için bir tamamlanma kanalı ekleyin.

for {
    select {
    case v := <-data:
        process(v)
    case <-done:
        return
    }
}

nil Kanallar

nil bir kanal, seçim durumunda sonsuza dek engeller ve bu durumun fiilen devre dışı kalmasını sağlar. Bu yöntemi, durumları çalışma zamanında dinamik olarak etkinleştirmek veya devre dışı bırakmak için kullanabilirsiniz.

var ch chan int // nil
select {
case v := <-ch: // never selected
    _ = v
case v := <-other:
    fmt.Println(v)
}

Kapalı Kanallarla Seçim

Kapalı bir kanaldan alma işlemi, sıfır değerini döndürerek her zaman hemen başarılı olur. Kapanmayı algılamak için iki değerli biçimle denetim yapın.

select {
case v, ok := <-ch:
    if !ok { return } // channel closed
    use(v)
}

Öncelik Kalıpları

Go seçim ifadesi öncelikleri yerleşik olarak desteklemez. Bir kanala öncelik vermek için seçim ifadelerini iç içe kullanın veya yüksek öncelikli kanalı önce varsayılan durumla denetleyen bir döngü kullanın.

for {
    select {
    case v := <-highPriority:
        handle(v)
    default:
        select {
        case v := <-lowPriority:
            handle(v)
        }
    }
}

Buraya Kadarki Özet

Seçim ifadesi birden fazla kanalı bekler, hazır durumlardan birini rastgele seçer, engellemesiz çalışma için varsayılan durumu destekler ve nil kanallar durumları devre dışı bırakır. Yaygın kalıp: for döngüsü + seçim ifadesi + tamamlanma kanalı.

Hızlı Kontrol

Bir seçim ifadesindeki birden fazla durum aynı anda hazır olduğunda ne olur?

Özet: select İfadesi

Temel noktalar:

  • Seçim ifadesi, bir kanal durumu hazır olana kadar engeller
  • Birden fazla hazır durum → rastgele seçim
  • Varsayılan durum, seçimi engellemesiz hâle getirir
  • nil kanal, kendi durumunu devre dışı bırakır
  • for döngüsü + seçim ifadesi + tamamlanma kanalı, standart çoklama döngüsüdür

Sıkça Sorulan Sorular

“select Deyimi” dersi ücretsiz mi?

Evet — “select Deyimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“select Deyimi” dersinde ne öğreneceğim?

Kanalları select ile çoklama Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“select Deyimi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. select Deyimi
  2. Zaman Aşımları ve Zamanlayıcılar
  3. Fan-in ve Fan-out Örüntüleri
  4. İşçi Havuzu Örüntüsü
← Go Academy Sayfasına Dön