Sobes.tech
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.