Senior
O que sabes sobre trabalhar com contextos em Go? Quais métodos existem para ele?
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 assíncronas.
Principais métodos e funções:
context.Background()— devolve um contexto vazio, geralmente usado como raiz.context.TODO()— marcador de posição quando o contexto ainda não está definido.WithCancel(parent Context)— devolve um novo contexto e uma função de cancelamento, permitindo cancelar operações.WithDeadline(parent Context, deadline time.Time)— cria um contexto com um limite de tempo.WithTimeout(parent Context, timeout time.Duration)— cria um contexto com um tempo limite.WithValue(parent Context, key, val interface{})— cria um contexto com um valor associado.
Exemplo de uso:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case <-time.After(3 * time.Second):
fmt.Println("operação finalizada")
case <-ctx.Done():
fmt.Println("operação cancelada ou expirou")
}
O contexto ajuda a controlar o tempo de vida das operações e a transmitir parâmetros sem variáveis globais.