Golang'da Seçim İfadesi Nasıl Kullanılır?

Golang Da Secim Ifadesi Nasil Kullanilir



A ifade seç Golang'da, geliştiricilerin Go rutinleri, kanalları ve veri akışları arasında senkronize olmasını ve iletişim kurmasını sağlar. Bir Go programının birden çok kanal işlemini aynı anda beklemesine ve hazır olan ilk işlemi yürütmesine olanak tanır.

Bu yazıda, nasıl kullanılacağını keşfedeceğiz ifade seç Golang'da ve Go programlarında paralellik, eşzamanlılık ve senkronizasyon elde etmenize yardımcı olacak örnekler sağlayın.

Golang'da Seçim İfadesi Nasıl Kullanılır?

switch ifadesine benzer şekilde, ifade seç birçok ifade arasından bir ifadeyi seçip yürütmemize izin verir, ancak arasındaki temel fark seçme ve geçiş şu ki ifade seç bekleme prensibine göre çalışır, yani ifade seç iletişim tamamlanana kadar çalışmayacaktır.







Burada iletişim, herhangi bir kanal üzerinden veri gönderip almak anlamına gelir. İletişim tamamlandığında bir sonraki kontrol gerçekleştirilir ve Go dilinin select ifadesinin tamamen kanala bağlı olduğunu görmemizi sağlar.



Seçim İfadesi için Sözdizimi

için kullanılan basit sözdizimi ifade seç Go dilinin kullanımı aşağıda gösterilmiştir:



seçme {
dava Kanal 1 :
// kanal_1 hazır olduğunda yürütülecek kod
dava kanal_2 :
// kanal_2 hazır olduğunda yürütülecek kod
dava kanal_3 :
// kanal_3 hazır olduğunda yürütülecek kod
dava kanal_4 :
// kanal_4 hazır olduğunda yürütülecek kod
varsayılan :
// kanallardan hiçbiri hazır değilse yürütülecek kod
}

Burada:





  • İçinde ifade seç , her durum, bir alma işlemi veya bir gönderme işlemi olabilen bir kanal işlemini temsil eder.
  • bu ifade seç vakalardan biri hazır olana kadar bekler ve ardından onu ve ilişkili vaka deyimini çalıştırır.
  • Yürütülmeye hazır birden fazla kanal olması durumunda kanalı rastgele seçer.

Golang'da Kanal Nasıl Oluşturulur

Go'da bir kanal oluşturmak için, kullanıcılar make işlevini ve ardından chan anahtar kelime ve int, string veya diğerleri olabilecek kanal türünü belirtin.

ch := yapmak ( kanal tipi )

Golang'da Select Deyimini Uygulayın

Burada, kullanımın temellerini öğrenmenize yardımcı olacak birkaç örnek sunacağız. ifade seç Golang'da.



örnek 1

Aşağıdaki örnek ifade seç her iki kanal da yürütmeye hazır olduğunda nasıl performans gösterdiğini gösterir.

ana paket

içe aktarmak 'fmt'

ana işlev ( ) {

birde := yapmak ( chan int )

str := yapmak ( chan dizisi )

kanal numarasına git ( birde )

chan_str'ye git ( str )

seçme {

dava Ch1 := <- birde :

fmt. Yazdır ( 'Kanal Verileri:' , Ch1 )

dava Ch2 := <- str :

fmt. Yazdır ( 'Kanal Verileri:' , Ch2 )

}

}

işlev kanal_sayısı ( num chan int ) {

birde <- 67

}

işlev chan_str ( str chan dizisi ) {

str <- 'Linux'

}

Yukarıdaki örnekte iki kanal oluşturduk, birde, Ve str ve Go fonksiyonlarını kullandık kanal_sayısı() num kanalına veri göndermek ve chan_str() str kanalına veri göndermek için. Program iki farklı kanal içerdiğinden, ifade seç birini yürütmek için.

Dava Ch1 değerden okur kanal sayısı ve onu görüntüler. Benzer şekilde, durum Ch2 değeri döndürür str kanal. Yukarıdaki program kullanıma hazır olan kanalın çıktısını döndürür. Çıktı

Örnek 2

Bir kanala gecikme eklemek ve başka bir kanalın çıktısını döndürmek isterseniz, Uyku zamanı() belirli bir kanalda çalışır. Bu, diğer kanalın çıktısını konsola yazdırmanıza olanak tanır. İşte böyle bir duruma bir örnek.

ana paket

içe aktarmak (

'fmt'

'zaman'

)

ana işlev ( ) {

birde := yapmak ( chan int )

str := yapmak ( chan dizisi )

kanal numarasına git ( birde )

chan_str'ye git ( str )

seçme {

dava Ch1 := <- birde :

fmt. Yazdır ( 'Kanal Verileri:' , Ch1 )

dava Ch2 := <- str :

fmt. Yazdır ( 'Kanal Verileri:' , Ch2 )

}

}

işlev kanal_sayısı ( num chan int ) {

birde <- 67

}

işlev chan_str ( str chan dizisi ) {

zaman . Uyumak ( 5 * zaman . Saniye )

str <- 'Linux'

}

Yukarıda verilen kodda, Uyku zamanı() içindeki işlev chan_str() işlev. İlk 5 saniye boyunca yalnızca num kanalı yürütmeye hazırdır. Sonuç olarak, ifade seç çalışır durumda Ch1 .

Çıktı

Not: Kanalların yürütülmesini geciktirmek için her iki kanala da bir gecikme ekleyebilirsiniz.

Çözüm

bu ifade seç in Go, ifadenin iletişim tamamlanana kadar yürütülmeyeceği bekleme ilkesini kullanarak birçok ifade arasından bir ifadenin seçilmesine ve yürütülmesine izin verir. Yukarıda belirtilen yönergeler şunları içerir: ifade seç temel sözdizimi ve örnekler.