Sobes.tech
Junior — Middle

Kan de context worden gebruikt om gegevens tussen componenten of functies door te geven?

sobes.tech AI

Antwoord van AI

In Go is de context (context.Context) bedoeld om signalen voor annulering, tijdslimieten en waarden gerelateerd aan de aanvraag of operatie, tussen goroutines en functies over te dragen. Het wordt echter niet aanbevolen om de context te gebruiken voor het overdragen van willekeurige gegevens tussen componenten of functies.

Redenen:

  • De context mag alleen gegevens bevatten die verband houden met het beheer van de levenscyclus van de operatie (bijvoorbeeld time-outs, annuleringen).
  • Het overdragen van bedrijfsgegevens via de context bemoeilijkt de code en vermindert de leesbaarheid.

De juiste aanpak is om de benodigde gegevens expliciet via de parameters van functies door te geven of andere structuren te gebruiken voor gegevensuitwisseling.

Voorbeeld van het gebruik van de context om een waarde gerelateerd aan de aanvraag over te dragen:

ctx := context.WithValue(context.Background(), "userID", 12345)
userID := ctx.Value("userID")

Het is echter beter om deze aanpak te vermijden voor het overdragen van gegevens tussen componenten, tenzij dit echt nodig is voor het beheer van de levenscyclus van de operatie.