¿Cómo usar la instrucción Select en Golang?

Como Usar La Instruccion Select En Golang



A declaración de selección en Golang permite a los desarrolladores sincronizar y comunicarse entre las rutinas, canales y flujos de datos de Go. Permite que un programa Go espere operaciones de múltiples canales a la vez y ejecute la primera operación que esté lista.

En este artículo, exploraremos cómo usar declaración de selección en Golang y proporcione ejemplos para ayudarlo a lograr el paralelismo, la concurrencia y la sincronización en los programas de Go.

¿Cómo usar la instrucción Select en Golang?

Similar a la sentencia switch, la declaración de selección nos permite seleccionar y ejecutar una expresión entre muchas expresiones, pero la principal diferencia entre seleccionar y cambiar es que el declaración de selección funciona según el principio de espera, lo que significa que el declaración de selección no se ejecutará hasta que se complete la comunicación.







Aquí, la comunicación se refiere al envío y recepción de datos a través de cualquier canal dado. Cuando se completa la comunicación, se realiza la siguiente verificación, lo que nos permite ver que la declaración de selección del idioma Go depende completamente del canal.



Sintaxis para la instrucción Select

La sintaxis simple utilizada para el declaración de selección el uso del idioma Go se muestra a continuación:



seleccionar {
    caso canal 1 :
        // código a ejecutar cuando channel_1 esté listo
    caso canal_2 :
        // código a ejecutar cuando channel_2 esté listo
    caso canal_3 :
        // código a ejecutar cuando channel_3 esté listo
    caso canal_4 :
        // código a ejecutar cuando channel_4 esté listo
    por defecto :
        // código a ejecutar si ninguno de los canales está listo
}

Aquí:





  • Dentro de un declaración de selección , cada caso representa una operación de canal, que puede ser una operación de recepción o una operación de envío.
  • El declaración de selección espera hasta que uno de los casos esté listo y luego lo ejecuta junto con la declaración del caso asociado.
  • Selecciona aleatoriamente el canal en caso de que haya varios canales listos para ejecutar.

Cómo crear un canal en Golang

Para crear un canal en Go, los usuarios pueden usar la función de creación seguida de la chan palabra clave y especifique el tipo de canal, que podría ser int, cadena u otros.

ch := hacer ( tipo chan )

Implementar instrucción Select en Golang

Aquí, proporcionaremos varios ejemplos para ayudarlo a aprender los conceptos básicos del uso del declaración de selección en Golang.



Ejemplo 1

El siguiente ejemplo de la declaración de selección demuestra cómo funciona cuando ambos canales están listos para ejecutarse.

paquete principal

importar 'fmt'

función principal ( ) {

en uno := hacer ( chan En t )

calle := hacer ( cadena chan )

ir chan_num ( en uno )

ir chan_str ( calle )

seleccionar {

    caso canal 1 := <- en uno :

fmt. Imprimir ( 'Datos del canal:' , canal 1 )

    caso Ch2 := <- calle :

fmt. Imprimir ( 'Datos del canal:' , Ch2 )

}

}

func chan_num ( num chan En t ) {

en uno <- 67

}

func chan_str ( cuerda str chan ) {

calle <- 'linux'

}

En el ejemplo anterior, creamos dos canales, en uno, y calle y usamos las funciones Go chan_num() para enviar datos al canal num y chan_str() para enviar datos al canal str. Debido a que el programa contiene dos canales diferentes, utilizamos el declaración de selección para ejecutar uno de ellos.

Caso canal 1 lee el valor de la número de canal y lo muestra. Del mismo modo, caso Ch2 devuelve el valor de la calle canal. El programa anterior devuelve la salida del canal que está listo para ser utilizado. Producción

Ejemplo 2

Si desea agregar un retraso a un canal y devolver la salida de otro canal, puede usar el tiempo de dormir() función en un canal específico. Esto le permite imprimir la salida del otro canal a la consola. He aquí un ejemplo de tal caso.

paquete principal

importar (

  'fmt'

  'tiempo'

)

función principal ( ) {

en uno := hacer ( chan En t )

calle := hacer ( cadena chan )

ir chan_num ( en uno )

ir chan_str ( calle )

seleccionar {

    caso canal 1 := <- en uno :

fmt. Imprimir ( 'Datos del canal:' , canal 1 )

    caso Ch2 := <- calle :

fmt. Imprimir ( 'Datos del canal:' , Ch2 )

}

}

func chan_num ( num chan En t ) {

en uno <- 67

}

func chan_str ( cuerda str chan ) {

  tiempo . Dormir ( 5 * tiempo . Segundo )

calle <- 'linux'

}

En el código anterior, usamos el tiempo de dormir() función dentro de la chan_str() función. Solo el canal num está listo para la ejecución durante los primeros 5 segundos. Como resultado, el declaración de selección corre el caso canal 1 .

Producción

Nota: Puede agregar un retraso a ambos canales para retrasar la ejecución de los canales.

Conclusión

El declaración de selección en Go permite la selección y ejecución de una expresión entre muchas expresiones usando el principio de espera, donde la declaración no se ejecutará hasta que se complete la comunicación. Las pautas antes mencionadas incluyen declaración de selección sintaxis básica y ejemplos.