Sobes.tech
Senior

Para que serve o contexto? Como foi utilizado na prática?

sobes.tech IA

Resposta da IA

Em Go, context é utilizado para transmitir sinais de cancelamento, limites de tempo e outros valores entre goroutines, especialmente ao trabalhar com pedidos, tempos limite e cancelamentos de operações.

Aplicação prática:

  • Cancelar operações longas ao fechar uma requisição HTTP.
  • Transmitir um limite de tempo para que uma operação não dure mais do que o tempo definido.
  • Transmitir metadados (por exemplo, identificadores de requisições) através da cadeia de chamadas.

Exemplo de uso:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operação concluída")
    case <-ctx.Done():
        fmt.Println("Operação cancelada")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Aqui, a operação será interrompida após 2 segundos, mesmo que esteja planejada para durar 5.