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.WithValueapenas 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
WithValuedevem 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.