Junior — Middle
Pode-se usar o contexto para passar dados entre componentes ou funções?
sobes.tech IA
Resposta da IA
No Go, o contexto (context.Context) destina-se a transmitir sinais de cancelamento, limites de tempo e valores relacionados com a solicitação ou operação, entre goroutines e funções. No entanto, não é recomendado usar o contexto para transmitir dados arbitrários entre componentes ou funções.
Razões:
- O contexto deve conter apenas dados relacionados com a gestão do ciclo de vida da operação (por exemplo, limites de tempo, cancelamentos).
- Transmitir dados de negócio através do contexto complica o código e reduz a sua legibilidade.
A abordagem correta é passar explicitamente os dados necessários através dos parâmetros das funções ou usar outras estruturas para trocar dados.
Exemplo de uso do contexto para transmitir um valor relacionado com a solicitação:
ctx := context.WithValue(context.Background(), "userID", 12345)
userID := ctx.Value("userID")
Mas é melhor evitar essa abordagem para transmitir dados entre componentes, a menos que seja realmente necessário para gerir o ciclo de vida da operação.