Non c'è nulla di complesso nelle chiamate selezionate in Go.
La sintassi è simile a un'istruzione switch come:
Selezionare
Caso operatore di case:
//
Case Channeloperation2:
//
Case Channeoperation3:
//
predefinito:
// Caso predefinito
Golang Select
Considera il seguente esempio di codice che illustra come utilizzare la chiamata di selezione Go.
Pacchetto principale
Importa "FMT"
func main ()
Channel1: = make (Chan String)
Channel2: = make (chan String)
go func ()
Channel1 <- "channel 1"
()
go func ()
Channel2 <- "channel 2"
()
Selezionare
Caso MSG11: = <-channel1:
fmt.Println ("Messaggio ricevuto da:", msg11)
case msg2: = <-channel2:
fmt.Println ("Messaggio ricevuto da:", msg2)
Se eseguiamo il codice precedente, noti che otteniamo un output diverso su ogni esecuzione. L'istruzione SELECT sceglie qualsiasi output se tutti i casi sono pronti.
Possiamo selezionare un caso predefinito utilizzando la parola chiave predefinita per evitare che la chiamata seleziona bloccare la goroutine principale.
Un esempio è come mostrato:
Pacchetto principale
Importa "FMT"
func main ()
Channel1: = make (Chan String)
Channel2: = make (chan String)
go func ()
Channel1 <- "channel 1"
()
go func ()
Channel2 <- "channel 2"
()
Selezionare
Caso MSG11: = <-channel1:
fmt.Println ("Messaggio ricevuto da:", msg11)
case msg2: = <-channel2:
fmt.Println ("Messaggio ricevuto da:", msg2)
predefinito:
fmt.Println ("le goroutine non sono pronte!")
Il programma precedente eseguirà il caso predefinito poiché le goroutine sono pronte e non hanno restituito alcun output.
Conclusione
Possiamo utilizzare la chiamata Seleziona GO per recuperare selettivamente i dati da più canali. La chiamata di selezione selezionerà casualmente i dati se tutti i provider sono pronti. Se nessuno è pronto, eseguiamo il caso predefinito. Speriamo che tu abbia trovato questo articolo. Dai un'occhiata ad altri articoli di suggerimento Linux per ulteriori suggerimenti e informazioni.