Golangda seçim ifadeleri kullanılırken bilinmesi gereken durumlar

Go dilinde select ifadesi switch ifadesine benzer , ancak select ifadesinde case ifadesi kanalda haberleşmeyi, yani gönderme veya alma işlemini ifade eder.

Golang'da seçim ifadeleri kullanılırken bilinmesi gereken durumlar

Sözdizimi:

select{

case SendOrReceive1: // Lệnh
case SendOrReceive2: // Lệnh
case SendOrReceive3: // Lệnh
.......
default: // Lệnh

Bu yazımızda çıkmazdan kaçınmak için varsayılan durumun nasıl kullanılacağını öğreneceğiz. Ama önce Golang select komutunu kullanırken deadlock durumunun ne olduğunu öğrenelim .

Golang'daki çıkmaz dava hakkında bilinmesi gerekenler

Kilitlenme: Bir kanaldan veri okumaya veya yazmaya çalıştığınızda ancak kanal boş olduğunda. Bu sayede goroutine'in mevcut yürütülmesi engellenir ve kontrol diğer goroutine'lere aktarılır, ancak başka bir goroutine mevcut değilse veya bu durumdan dolayı diğer goroutine'ler dinlenme halindeyse program çöker. Bu olguya çıkmaz denir. Aşağıdaki örnekte görüldüğü gibi:

Örneğin:

// Chương trình Go minh hoạc
// cách deadlock phát sinh
package main 

// Hàm chính
func main() { 

	// Tạo một kênh
	// Deadlock phát sinh bởi
	// không có goroutine đang viết
	// vào kênh này, vì thế
	// lệnh select đã bị khóa mãi mãi
	c := make(chan int) 
	select { 
	case <-c: }="" }="">

Sonuç:

fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
main.main()

Bu durumu önlemek için select ifadesinde varsayılan durumu kullanırız. Başka bir deyişle, programda bir çıkmaz oluştuğunda, çıkmazı önlemek için select ifadesinin varsayılan durumu çalıştırılır. Aşağıdaki örnekte olduğu gibi, çıkmaza girmemek için select ifadesinde varsayılan durumu kullanıyoruz.

Örneğin:

// Chương trình Go minh họa cách giải quyết
// vấn đề deadlock bằng case mặc định
package main 

import "fmt"

// Hàm chính
func main() { 

	// Tạo 1 kênh
	c := make(chan int) 
	select { 
	case <-c: default:="" fmt.println("!..="" default="" case..!")="" }="" }="">

Sonuç:

!.. Default case..!

Ayrıca, select ifadesinin yalnızca nil kanalı olduğunda varsayılan durumu kullanmanıza da izin verilir . Aşağıdaki örnekte görüldüğü gibi c kanalı nil olduğundan, burada varsayılan durum mevcut değilse varsayılan durum çalıştırılır, program sonsuza kadar bloke olur ve çıkmaza girilir.

Örneğin:

// Chương trình Go minh họa
// chạy case mặc định
package main 

import "fmt"

// Hàm chính
func main() { 

	// Tạo một kênh
	var c chan int

	select { 
	case x1 := <-c: fmt.println("value:="" ",="" x1)="" default:="" fmt.println("default="" case..!")="" }="" }="">

Sonuç:

Default case..!

Yorum bırak

Kıyafetlerdeki yapıştırıcı kalıntılarını çıkarma: leke kalıcı hale gelmeden önce nazikçe hareket edin

Kıyafetlerdeki yapıştırıcı kalıntılarını çıkarma: leke kalıcı hale gelmeden önce nazikçe hareket edin

Kıyafetlerdeki yapıştırıcı kalıntılarını çıkarma: dikkatli sökmeden soğuk, sabunlu su ve leke çıkarıcıya, oradan yıkamaya kadar. Japon yapıştırıcısı, etiket kalıntıları ve hassas kumaşlar için ipuçlarıyla.

Bulaşık makinesi filtresi nasıl temizlenir: kalıntı ve kötü kokuları önlemek için basit rehber

Bulaşık makinesi filtresi nasıl temizlenir: kalıntı ve kötü kokuları önlemek için basit rehber

Bulaşık makinesi filtresini adım adım temizlemeyi öğrenin: çıkarma, durulama, fırçalama, yeniden takma, sıklık ve basit bir temizliğin artık yeterli olmadığının işaretleri.

Nemlendirici temizliğinde sitrik asit kullanılabilir mi? Yöntemlere göre dikkat edilmesi gerekenler ve güvenli adımlar örneklerle açıklanıyor

Nemlendirici temizliğinde sitrik asit kullanılabilir mi? Yöntemlere göre dikkat edilmesi gerekenler ve güvenli adımlar örneklerle açıklanıyor

Nemlendiricileri sitrik asit ile temizlerken konsantrasyon, bekletme, durulama ve yöntemlere göre dikkat edilmesi gerekenler üretici resmi bilgilerine dayanarak açıklanıyor. Örnek senaryolarla pratik adımlar anlaşılır şekilde sunuluyor.

Klima Filtresi Temizlenmezse Ne Olur? Elektrik Faturası, Verimlilik, Küf Riski ve Temizlik Sıklığı Seçimi

Klima Filtresi Temizlenmezse Ne Olur? Elektrik Faturası, Verimlilik, Küf Riski ve Temizlik Sıklığı Seçimi

Klima filtresi temizlenmediğinde elektrik faturalarında artış, ısıtma/soğutma verimliliğinde düşüş, koku ve küf oluşumu gibi sorunlar yaşanabilir. Üretici ve enerji tasarrufu bilgilerine dayanarak temizlik sıklığı, otomatik temizleme fonksiyonu ve profesyonel temizlik arasındaki dengeyi açıklıyoruz.

Sırt çantasını çamaşır makinesinde yıkamak: Ne zaman yapılabilir, ne zaman kaçınılmalı?

Sırt çantasını çamaşır makinesinde yıkamak: Ne zaman yapılabilir, ne zaman kaçınılmalı?

Sırt çantasının çamaşır makinesinde ne zaman yıkanabileceğini, bakım etiketinin nasıl okunacağını, program ve deterjan seçimini, askı ve fermuarların korunmasını ve el ile yıkamanın ne zaman tercih edilmesi gerektiğini keşfedin.

Microsoft Teams Lisans Hatası Giderme

Microsoft Teams Lisans Hatası Giderme

Microsoft Teams'te "Lisans Hatası" ile mi karşılaşıyorsunuz? Lisans sorunlarını hızlıca çözmek, erişimi geri yüklemek ve BT ekibiyle uğraşmadan verimliliği artırmak için bu adım adım sorun giderme kılavuzunu izleyin. En son düzeltmelerle güncellendi.

Microsoft Teams Ücretsiz Abonelik Hatası Nasıl Düzeltilir?

Microsoft Teams Ücretsiz Abonelik Hatası Nasıl Düzeltilir?

Microsoft Teams Ücretsiz Abonelik Hatası yüzünden toplantılarınızın aksamasından bıktınız mı? Sorunu hızlıca çözmek ve sorunsuz ekip çalışmasını yeniden sağlamak için kanıtlanmış, adım adım çözümleri keşfedin. En yeni sürümlerde çalışır!

Herkese Açık Wi-Fi Ağlarında Microsoft Teams Ağ Hatasını Çözme

Herkese Açık Wi-Fi Ağlarında Microsoft Teams Ağ Hatasını Çözme

Herkese açık Wi-Fi ağlarında Microsoft Teams ağ hatasıyla mı karşılaşıyorsunuz? Aramalarınızı ve toplantılarınızı sorunsuz bir şekilde geri yüklemek için VPN ayarları, port kontrolleri ve önbellek temizleme gibi anında çözümler bulun. Hızlı çözüm için adım adım kılavuz.

Microsoft Teams Wiki Sekmesinin Yüklenmeme Hatası Nasıl Düzeltilir?

Microsoft Teams Wiki Sekmesinin Yüklenmeme Hatası Nasıl Düzeltilir?

Microsoft Teams Wiki sekmesinin yüklenmemesi hatasıyla mı karşılaşıyorsunuz? Sorunu hızlıca çözmek, Wiki sekmelerinizi geri yüklemek ve ekip verimliliğini sorunsuz bir şekilde artırmak için kanıtlanmış adım adım çözümleri keşfedin.

Microsoft Teams Mac Hata Anahtar Zinciri Sorunlarını Giderme

Microsoft Teams Mac Hata Anahtar Zinciri Sorunlarını Giderme

Microsoft Teams Mac'te Anahtar Zinciri hatasıyla mı mücadele ediyorsunuz? Sorunsuz iş birliğine geri dönmek için macOS için kanıtlanmış, adım adım sorun giderme çözümlerini keşfedin. Hızlı çözümler içeride!