„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Go Context – TODO() vs Background() Keine Verwirrung mehr!

Go Context – TODO() vs Background() Keine Verwirrung mehr!

Veröffentlicht am 06.11.2024
Durchsuche:966

Go Context — TODO() vs Background() No more confusing!

In Go hilft das Kontextpaket bei der Verwaltung von anfragebezogenen Werten, Stornierungssignalen und Fristen.
Zwei gängige Methoden zum Starten eines Kontexts sind context.TODO() und context.Background().
Obwohl sie sich ähnlich verhalten, dienen sie unterschiedlichen Zwecken.

context.Background()

context.Background() ist die Standardeinstellung, wenn Sie keine besondere Behandlung benötigen (z. B. Stornierung oder Fristen).
Es wird oft in main, init oder beim Initialisieren von Vorgängen verwendet, die keinen spezifischeren Kontext benötigen.

Beispiel:

 func main() {
     ctx := context.Background()
     server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context {
         return ctx
     }}
     log.Fatal(server.ListenAndServe())
 }

In diesem Beispiel wird context.Background() verwendet, um einen Basiskontext für den HTTP-Server einzurichten.

context.TODO()

context.TODO() ist ein Platzhalterkontext. Verwenden Sie es, wenn Sie nicht sicher sind, welchen Kontext Sie bereitstellen sollen, oder wenn Sie später eine Umgestaltung planen.

Beispiel:

 func processOrder() {
     ctx := context.TODO() // Placeholder, decision on context pending
     err := db.SaveOrder(ctx, orderData)
     if err != nil {
         log.Println("Failed to save order:", err)
     }
 }

Hier wird context.TODO() vorübergehend für eine Datenbankoperation verwendet, bis ein spezifischerer Kontext definiert ist.

Hauptunterschiede

Beide Funktionen geben einen leeren Kontext zurück, drücken jedoch unterschiedliche Absichten aus:

  • context.Background(): Wird verwendet, wenn Sie sicher sind, dass keine besonderen Kontextfunktionen erforderlich sind.
  • context.TODO(): Ein temporärer Platzhalterkontext, der zukünftige Änderungen signalisiert.

Abschluss

Wann context.Background() verwendet werden sollte:

  • Beim Initialisieren von Kerndiensten wie HTTP-Servern oder Datenbankverbindungen.
  • Wenn keine Stornierung, Fristen oder Werte erforderlich sind.

Wann man context.TODO() verwendet:

  • Beim Refactoring und Sie haben sich noch nicht für den Kontext entschieden.
  • Bei der Implementierung von Code im Frühstadium, der zukünftige Verbesserungen erfordert.
Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/zakariachahboun/are-you-confused-about-contexttodo-vs-contextbackground-heres-what-you-need-to-know-2h46?1 Falls ein Verstoß vorliegt Bitte kontaktieren Sie Study_golang @163.comdelete
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3