El contexto es tan útil que muchas bibliotecas en el ecosistema GO los usan. También los encontrará en aplicaciones que interactúan con servidores remotos, bases de datos, llamadas de API y más.
Para este artículo, proporcionaremos una introducción para principiantes al paquete de contexto en GO y cómo usar el contexto para varios casos de uso.
Contexto con valor
Uno de los principales casos de uso de contextos en GO es compartir datos o usar valores de solicitud de solicitudes. El paquete de contexto de Golang le proporciona la función WithValue que le permite compartir datos.
La sintaxis de la función es como se muestra:
FUNC WithValue (contexto principal, clave, interfaz Val ) contexto
La función toma un contexto, clave y valor como parámetros. La función creará un nuevo contexto basado en el padre proporcionado y agregará un valor especificado a la clave establecida.
Piense en ello como un contexto interno con un tipo de par de valores clave en el interior. Luego puede obtener o recuperar valores del tipo.
Considere el siguiente ejemplo que ilustra cómo usar la función With Value y recuperar valores de ella.
paquete principalCentrarse en la función principal del código anterior. Comenzamos creando un nuevo objeto de contexto, CTX, con el contexto.Función de fondo ().
La función de fondo devolverá un contexto vacío no NIL sin cancelaciones, sin valores y sin plazos.
La función de fondo sirve como inicialización para las solicitudes de contexto entrantes.
Context Establecer valores
La segunda parte de la función es la función addValues (). Tomamos un nuevo contexto y lo vinculamos a un contexto existente en este ejemplo. El nuevo contexto mantiene la clave para agregar al contexto.
Observe que la función WithValue devuelve una copia del contexto principal y no modifica el contexto existente.
Valores de recuperación del contexto
La segunda parte del programa es la función RemieveValue (). En este caso, tomamos la estructura de contexto y recuperamos los valores asociados con la clave especificada.
Si la clave existe dentro del contexto, la función debe devolver el valor asociado.
Si la clave no existe, la función debe devolver nulo. Podemos implementar la lógica condicional para verificar si el valor de retorno es nulo y devolver un error si es verdadero.
Contexto con tiempo de espera
Otro caso de uso común de los contextos es el manejo de tiempos de espera. Por ejemplo, es posible que deba definir un tiempo de espera en ciertas aplicaciones si no se realiza una acción específica. Esto es increíblemente simple de implementar utilizando la función WithTimeOut desde el paquete de contexto. Veamos cómo podemos implementar el tiempo de espera utilizando el paquete de contexto.
paquete principalEn este ejemplo, definimos una función de cancelación utilizando el contexto.Con la función de tiempo de tiempo. Entonces podemos activar la función de cancelar manualmente si vemos ajustado.
Una vez que se alcanza el valor del tiempo de espera, se llama a la función de cancelar y ejecuta la lógica especificada.
En nuestra función de valor de recuperación, recuperamos continuamente el valor con la clave especificada usando el bucle for bucle. También verificamos si el canal hecho desde el contexto principal sigue vivo. Si el tiempo de espera no ha excedido, el contexto principal aún estará abierto, pero una vez que se alcanza el tiempo de espera, el contexto se cancela.
En nuestro ejemplo, la función se ejecutará cada 1 segundo antes de alcanzar el tiempo de espera. Una salida de ejemplo es como se muestra:
valorConclusión
Este fue un tutorial breve y fundamental que discutió contextos y cómo usarlos en sus programas Go. Puede consultar la documentación para explorar más sobre los contextos de Go.