Middle+
Fala sobre o contexto em Go: para que é usado, como funciona o cancelamento?
sobes.tech IA
Resposta da IA
No Go, o pacote context é utilizado para transmitir sinais de cancelamento, limites de tempo e outros valores entre goroutines, especialmente em operações de rede e de longa duração.
Pontos principais:
-
Para que serve:
- Cancelar operações (por exemplo, pedidos HTTP, bases de dados) quando o tempo expira ou por sinal.
- Transmitir limites de tempo (timeouts).
- Transmitir valores relacionados com a requisição (por exemplo, identificadores, tokens).
-
Como funciona o cancelamento:
- É criado um contexto com uma função de cancelamento (
context.WithCancel), que devolve um novo contexto e uma função de cancelamento. - Ao chamar a função de cancelamento, todas as goroutines que escutam esse contexto recebem o sinal e podem interromper o trabalho.
- É criado um contexto com uma função de cancelamento (
Exemplo:
ctx, cancel := context.WithCancel(context.Background())
// Iniciar uma goroutine que escuta o cancelamento
go func() {
<-ctx.Done()
fmt.Println("Operação cancelada")
}()
// Após algum tempo, cancelamos o contexto
cancel()
Assim, context ajuda a gerir o ciclo de vida das operações e a evitar fugas de recursos.