Sobes.tech
Junior — Middle

Quais abordagens e práticas recomendadas são usadas ao trabalhar com o contexto e o método context.WithValue?

sobes.tech IA

Resposta da IA

Ao trabalhar com o contexto em Go e usando context.WithValue, é importante lembrar as seguintes recomendações:

  • O contexto destina-se a transmitir sinais de cancelamento, limites de tempo e informações limitadas relacionadas com a solicitação.
  • Use context.WithValue apenas para transmitir dados necessários ao longo do ciclo de vida da solicitação e que não sejam adequados como parâmetros explícitos de funções.
  • As chaves para WithValue devem ser tipos únicos e não públicos para evitar conflitos. Normalmente, cria-se um tipo de chave próprio.
  • Não armazene no contexto objetos grandes ou dados que possam causar vazamentos de memória.

Exemplo de uso de uma chave:

package main

import (
    "context"
    "fmt"
)

type ctxKey string

func main() {
    key := ctxKey("userID")
    ctx := context.WithValue(context.Background(), key, 42)

    userID := ctx.Value(key).(int)
    fmt.Println("ID do usuário do contexto:", userID)
}

Assim, o contexto serve para transmitir metadados e gerenciar o ciclo de vida das operações, não para armazenar o estado da aplicação.