Contexto são tão úteis que muitas bibliotecas no ecossistema Go os usem. Você também os encontrará em aplicativos que interagem com servidores remotos, bancos de dados, chamadas de API e mais.
Para este artigo, forneceremos uma introdução iniciante ao pacote de contexto em Go e como usar o contexto para vários casos de uso.
Contexto com valor
Um dos principais casos de uso de contextos no GO é compartilhar dados ou usar valores de solicitação de solicitação. O pacote de contexto de Golang fornece a função WithValue que permite compartilhar dados.
A sintaxe da função é como mostrado:
func withvalue (contexto pai, chave, interface Val ) contexto
A função leva um contexto, chave e valor como os parâmetros. A função criará um novo contexto com base no pai fornecido e adicionará um valor especificado à tecla Definir.
Pense nisso como um contexto interno com um tipo de par de valores-chave dentro. Você pode buscar ou recuperar valores do tipo.
Considere o exemplo abaixo que ilustra como usar a função withvalue e recuperar valores.
Pacote principalConcentre -se na função principal do código acima. Começamos criando um novo objeto de contexto, CTX, com o contexto.Função () função.
A função de fundo retornará um contexto não-nil vazio, sem cancelamentos, sem valores e sem prazos.
A função de fundo serve como inicialização para solicitações de contexto recebidas.
Valores do conjunto de contexto
A segunda parte da função é a função addValues (). Tomamos um novo contexto e o ligamos a um contexto existente neste exemplo. O novo contexto é mantido a chave para adicionar ao contexto.
Observe que a função WithValue retorna uma cópia do contexto pai e não modifica o contexto existente.
Contexto recuperar valores
A segunda parte do programa é a função RectrieveValue (). Nesse caso, pegamos a estrutura do contexto e recuperamos os valores associados à chave especificada.
Se a chave existir dentro do contexto, a função deve retornar o valor associado.
Se a chave não existir, a função deve retornar nil. Podemos implementar a lógica condicional para verificar se o valor de retorno é nulo e retornar um erro se verdadeiro.
Contexto com tempo limite
Outro caso de uso comum de contextos é lidar com os times. Por exemplo, pode ser necessário definir um tempo limite em determinadas aplicações se uma ação especificada não for executada. Isso é incrivelmente simples de implementar usando a função Wnestimeout do pacote de contexto. Vejamos como podemos implementar o tempo limite usando o pacote de contexto.
Pacote principalNeste exemplo, definimos uma função de cancelamento usando o contexto.Função com tempoout. Podemos então acionar a função cancelada manualmente se considerarmos o ajuste.
Uma vez atingido o valor do tempo limite, a função de cancelamento é chamada e executa a lógica especificada.
Em nossa função de valor de recuperação, recuperamos continuamente o valor com a chave especificada usando o loop for. Também verificamos se o canal feito do contexto principal ainda está vivo. Se o tempo limite não tiver excedido, o contexto pai ainda estará aberto, mas uma vez atingido o tempo limite, o contexto será cancelado.
Em nosso exemplo, a função será executada a cada 1 segundo antes que o tempo limite seja alcançado. Um exemplo de saída é como mostrado:
valorConclusão
Este foi um tutorial curto e fundamental discutindo contextos e como usá -los em seus programas Go. Você pode verificar a documentação para explorar mais sobre os contextos Go.