Jak korzystać z instrukcji Select w Golang?

Jak Korzystac Z Instrukcji Select W Golang



A wybierz oświadczenie w Golang umożliwia programistom synchronizację i komunikację między procedurami Go, kanałami i strumieniami danych. Pozwala programowi Go czekać na operacje na wielu kanałach jednocześnie i wykonać pierwszą gotową operację.

W tym artykule przyjrzymy się, jak używać wybierz oświadczenie w Golang i podaj przykłady, które pomogą Ci osiągnąć równoległość, współbieżność i synchronizację w programach Go.

Jak korzystać z instrukcji Select w Golang?

Podobnie jak instrukcja switch, instrukcja wybierz oświadczenie pozwala nam wybrać i wykonać jedno wyrażenie spośród wielu wyrażeń, ale podstawowa różnica między wybierać i przełącznik polega na tym, że wybierz oświadczenie działa na zasadzie oczekiwania, co oznacza, że wybierz oświadczenie nie zostanie wykonany, dopóki komunikacja nie zostanie zakończona.







Tutaj komunikacja odnosi się do wysyłania i odbierania danych przez dowolny kanał. Po zakończeniu komunikacji przeprowadzane jest kolejne sprawdzenie, które pozwala nam zobaczyć, że instrukcja select języka Go jest całkowicie zależna od kanału.



Składnia instrukcji Select

Prosta składnia używana dla wybierz oświadczenie przy użyciu języka Go pokazano poniżej:



wybierać {
sprawa kanał 1 :
// kod do wykonania, gdy kanał_1 będzie gotowy
sprawa kanał_2 :
// kod do wykonania, gdy kanał_2 będzie gotowy
sprawa kanał_3 :
// kod do wykonania, gdy kanał_3 będzie gotowy
sprawa kanał_4 :
// kod do wykonania, gdy kanał_4 będzie gotowy
domyślny :
// kod do wykonania, jeśli żaden z kanałów nie jest gotowy
}

Tutaj:





  • W granicach wybierz oświadczenie , każdy przypadek reprezentuje operację kanału, która może być operacją odbioru lub operacją wysyłania.
  • The wybierz oświadczenie czeka, aż jedna ze spraw będzie gotowa, a następnie uruchamia ją i powiązaną instrukcję sprawy.
  • Losowo wybiera kanał w przypadku, gdy istnieje wiele kanałów gotowych do wykonania.

Jak stworzyć kanał w Golang

Aby utworzyć kanał w Go, użytkownicy mogą użyć funkcji make, po której następuje chan słowo kluczowe i określ typ kanału, którym może być int, string lub inne.

rozdz := robić ( typ chan )

Zaimplementuj instrukcję Select w Golang

Tutaj podamy kilka przykładów, które pomogą Ci nauczyć się podstaw korzystania z programu wybierz oświadczenie w Golangu.



Przykład 1

Poniższy przykład tzw wybierz oświadczenie pokazuje, jak działa, gdy oba kanały są gotowe do wykonania.

Pakiet główny

import 'fmt'

funkcja główna ( ) {

na jednego := robić ( chan int )

ul := robić ( łańcuch chan )

przejdź do kanału_num ( na jednego )

idź chan_str ( ul )

wybierać {

sprawa Ch1 := <- na jednego :

fmt. Drukuj ln ( „Dane kanału:” , Ch1 )

sprawa Ch2 := <- ul :

fmt. Drukuj ln ( „Dane kanału:” , Ch2 )

}

}

numer_kananu funkcji ( numer chan int ) {

na jednego <- 67

}

funkcja chan_str ( ciąg znaków str chan ) {

ul <- „Linux”

}

W powyższym przykładzie stworzyliśmy dwa kanały, na jednego, I ul i użyliśmy funkcji Go numer_kanał() aby wysłać dane do kanału num i chan_str() aby wysłać dane do kanału str. Ponieważ program zawiera dwa różne kanały, wykorzystaliśmy wybierz oświadczenie wykonać jedną z nich.

Sprawa Ch1 odczytuje wartość z numer kanału i wyświetla go. Podobnie sprawa Ch2 zwraca wartość z ul kanał. Powyższy program zwraca wyjście kanału, który jest gotowy do użycia. Wyjście

Przykład 2

Jeśli chcesz dodać opóźnienie do kanału i zwrócić wyjście innego kanału, możesz użyć czas spać() funkcję na określonym kanale. Pozwala to na wydrukowanie wyjścia innego kanału do konsoli. Oto przykład takiego przypadku.

Pakiet główny

import (

'fmt'

'czas'

)

funkcja główna ( ) {

na jednego := robić ( chan int )

ul := robić ( łańcuch chan )

przejdź do kanału_num ( na jednego )

idź chan_str ( ul )

wybierać {

sprawa Ch1 := <- na jednego :

fmt. Drukuj ln ( „Dane kanału:” , Ch1 )

sprawa Ch2 := <- ul :

fmt. Drukuj ln ( „Dane kanału:” , Ch2 )

}

}

numer_kananu funkcji ( numer chan int ) {

na jednego <- 67

}

funkcja chan_str ( ciąg znaków str chan ) {

czas . Spać ( 5 * czas . Drugi )

ul <- „Linux”

}

W powyższym kodzie użyliśmy metody czas spać() funkcjonować wewnątrz chan_str() funkcjonować. Tylko kanał num jest gotowy do wykonania przez pierwsze 5 sekund. W rezultacie wybierz oświadczenie prowadzi sprawę Ch1 .

Wyjście

Notatka: Możesz dodać opóźnienie do obu kanałów, aby opóźnić wykonanie kanałów.

Wniosek

The wybierz oświadczenie w Go pozwala na wybór i wykonanie jednego wyrażenia z wielu wyrażeń przy użyciu zasady oczekiwania, gdzie instrukcja nie zostanie wykonana, dopóki komunikacja nie zostanie zakończona. Wspomniane wytyczne to m.in wybierz oświadczenie podstawowa składnia i przykłady.