Kuinka käyttää Select-lausetta Golangissa?

Kuinka Kayttaa Select Lausetta Golangissa



A valitse lausunto in Golangin avulla kehittäjät voivat synkronoida ja kommunikoida Go-rutiinien, kanavien ja tietovirtojen välillä. Sen avulla Go-ohjelma odottaa useita kanavatoimintoja kerralla ja suorittaa ensimmäisen valmiin toiminnon.

Tässä artikkelissa tutkimme, miten sitä käytetään valitse lausunto Golangissa ja anna esimerkkejä, joiden avulla voit saavuttaa yhdensuuntaisuuden, samanaikaisuuden ja synkronoinnin Go-ohjelmissa.

Kuinka käyttää Select-lausetta Golangissa?

Samoin kuin kytkinlauseessa, valitse lausunto sallii meidän valita ja suorittaa yhden lausekkeen monien lausekkeiden joukosta, mutta ensisijainen ero valitse ja kytkin on se valitse lausunto toimii odotusperiaatteella, mikä tarkoittaa, että valitse lausunto ei käynnisty ennen kuin viestintä on valmis.







Tässä viestinnällä tarkoitetaan tiedon lähettämistä ja vastaanottamista minkä tahansa kanavan kautta. Kun viestintä on valmis, suoritetaan seuraava tarkistus, jonka avulla voimme nähdä, että Go-kielen valintalause on täysin riippuvainen kanavasta.



Syntaksi Select Statementille

Yksinkertainen syntaksi, jota käytetään valitse lausunto Go-kielen käyttö näkyy alla:



valitse {
tapaus kanava_1 :
// Suoritettava koodi, kun kanava_1 on valmis
tapaus kanava_2 :
// Suoritettava koodi, kun kanava_2 on valmis
tapaus kanava_3 :
// Suoritettava koodi, kun kanava_3 on valmis
tapaus kanava_4 :
// Suoritettava koodi, kun kanava_4 on valmis
oletuksena :
// Suoritettava koodi, jos mikään kanavista ei ole valmis
}

Tässä:





  • Sisällä a valitse lausunto , kukin tapaus edustaa kanavatoimintoa, joka voi olla vastaanotto- tai lähetystoiminto.
  • The valitse lausunto odottaa, kunnes yksi tapauksista on valmis, ja suorittaa sitten sen ja siihen liittyvän tapauslausekkeen.
  • Se valitsee satunnaisesti kanavan, jos useita kanavia on valmiina suoritettavaksi.

Kanavan luominen Golangissa

Kanavan luomiseksi Gossa käyttäjät voivat käyttää make-toimintoa ja sen jälkeen chan avainsana ja määritä kanavatyyppi, joka voi olla int, merkkijono tai muu.

ch := tehdä ( chan tyyppi )

Toteuta Select Statement Golangissa

Tässä annamme useita esimerkkejä, joiden avulla voit oppia käytön perusteet valitse lausunto Golangissa.



Esimerkki 1

Seuraava esimerkki valitse lausunto osoittaa, kuinka se toimii, kun molemmat kanavat ovat valmiita suorittamaan.

pääpaketti

tuonti 'fmt'

func main ( ) {

yhdellä := tehdä ( chan int )

str := tehdä ( chan merkkijono )

mene chan_num ( yhdellä )

mene chan_str ( str )

valitse {

tapaus Ch1 := <- yhdellä :

fmt. Println ( 'Kanavan tiedot:' , Ch1 )

tapaus Ch2 := <- str :

fmt. Println ( 'Kanavan tiedot:' , Ch2 )

}

}

func chan_num ( num chan int ) {

yhdellä <- 67

}

func chan_str ( str chan merkkijono ) {

str <- 'Linux'

}

Yllä olevassa esimerkissä loimme kaksi kanavaa, yhdellä, ja str ja käytimme Go-toimintoja chan_num() lähettääksesi tietoja numerokanavalle ja chan_str() lähettääksesi tietoja str-kanavalle. Koska ohjelma sisältää kaksi eri kanavaa, hyödynsimme valitse lausunto teloittaakseen yhden niistä.

Asia Ch1 lukee arvon num kanava ja näyttää sen. Samoin tapaus Ch2 palauttaa arvon arvosta str kanava. Yllä oleva ohjelma palauttaa kanavan lähdön, joka on valmis käytettäväksi. Lähtö

Esimerkki 2

Jos haluat lisätä viiveen kanavaan ja palauttaa toisen kanavan lähdön, voit käyttää time.sleep() toiminto tietyllä kanavalla. Tämän avulla voit tulostaa toisen kanavan tulosteen konsoliin. Tässä esimerkki tällaisesta tapauksesta.

pääpaketti

tuonti (

'fmt'

'aika'

)

func main ( ) {

yhdellä := tehdä ( chan int )

str := tehdä ( chan merkkijono )

mene chan_num ( yhdellä )

mene chan_str ( str )

valitse {

tapaus Ch1 := <- yhdellä :

fmt. Println ( 'Kanavan tiedot:' , Ch1 )

tapaus Ch2 := <- str :

fmt. Println ( 'Kanavan tiedot:' , Ch2 )

}

}

func chan_num ( num chan int ) {

yhdellä <- 67

}

func chan_str ( str chan merkkijono ) {

aika . Nukkua ( 5 * aika . Toinen )

str <- 'Linux'

}

Yllä annetussa koodissa käytimme aika. Sleep() toiminto sisällä chan_str() toiminto. Vain numero-kanava on valmis suoritettavaksi ensimmäisten 5 sekunnin ajan. Tämän seurauksena valitse lausunto ajaa tapausta Ch1 .

Lähtö

Huomautus: Voit lisätä viiveen molempiin kanaviin viivästyttääksesi kanavien suorittamista.

Johtopäätös

The valitse lausunto in Go mahdollistaa yhden lausekkeen valinnan ja suorittamisen monista lausekkeista odotusperiaatteella, jolloin käskyä ei suoriteta ennen kuin viestintä on valmis. Edellä mainitut ohjeet sisältävät mm valitse lausunto perussyntaksi ja esimerkit.