Der Kontext ist so nützlich, dass viele Bibliotheken im Go -Ökosystem sie verwenden. Sie finden sie auch in Anwendungen, die mit Remote -Servern, Datenbanken, API -Aufrufen und mehr interagieren.
Für diesen Artikel werden wir eine Einführung in das Kontextpaket für Anfänger in Go und wie der Kontext für verschiedene Anwendungsfälle verwendet.
Kontext mit Wert
Einer der Hauptanwendungsfälle von Kontexten in GO besteht darin. Das Golang -Kontextpaket bietet Ihnen die With -Wert -Funktion, mit der Sie Daten freigeben können.
Die Funktionssyntax ist wie gezeigt:
Func WithValue (übergeordneter Kontext, Schlüssel, VAL -Schnittstelle ) Kontext
Die Funktion nimmt einen Kontext, einen Schlüssel und einen Wert als Parameter vor. Die Funktion erstellt dann einen neuen Kontext basierend auf dem bereitgestellten übergeordneten über und fügt dem festgelegten Schlüssel einen angegebenen Wert hinzu.
Betrachten Sie es als einen internen Kontext mit einem Schlüsselwertepaartyp im Inneren. Sie können dann Werte vom Typ abrufen oder abrufen.
Betrachten Sie das folgende Beispiel unten, der zeigt, wie die With -Wert -Funktion verwendet wird und Werte daraus abrufen.
Paket MainKonzentrieren Sie sich auf die Hauptfunktion des obigen Codes. Wir beginnen mit dem Erstellen eines neuen Kontextobjekts, CTX, mit dem Kontext.Hintergrund () Funktion.
Die Hintergrundfunktion gibt dann einen leeren Nicht-Nil-Kontext ohne Stornierungen, ohne Werte und ohne Fristen zurück.
Die Hintergrundfunktion dient als Initialisierung für eingehende Kontextanforderungen.
Kontext werden Werte festgelegt
Der zweite Teil der Funktion ist die Funktion addValues (). Wir nehmen einen neuen Kontext und binden ihn in diesem Beispiel an einen vorhandenen Kontext. Der neue Kontext enthält den Schlüssel, um den Kontext hinzuzufügen.
Beachten Sie, dass die With -Wert -Funktion eine Kopie des übergeordneten Kontexts zurückgibt und den vorhandenen Kontext nicht ändert.
Der Kontext ruft Werte ab
Der zweite Teil des Programms ist die Funktion retrieveValue (). In diesem Fall nehmen wir die Kontextstruktur an und holen die mit dem angegebenen Schlüssel zugeordneten Werte ab.
Wenn der Schlüssel im Kontext vorhanden ist, sollte die Funktion den zugehörigen Wert zurückgeben.
Wenn der Schlüssel nicht vorhanden ist, sollte die Funktion Nil zurückgeben. Wir können eine bedingte Logik implementieren, um zu überprüfen.
Kontext mit Timeout
Ein weiterer häufiger Anwendungsfall von Kontexten ist der Umgang mit Timeouts. Zum Beispiel müssen Sie möglicherweise eine Zeitüberschreitung in bestimmten Anwendungen definieren, wenn keine angegebene Aktion ausgeführt wird. Dies ist unglaublich einfach zu implementieren mit der Withtimeout -Funktion aus dem Kontextpaket. Sehen wir uns an, wie wir Timeout mit dem Kontextpaket implementieren können.
Paket MainIn diesem Beispiel definieren wir eine Abbrechenfunktion mit dem Kontext.Mit Timeout -Funktion. Wir können dann die Abbrechenfunktion manuell auslösen, wenn wir es für richtig halten.
Sobald der Zeitüberschreitungswert erreicht ist, wird die Abbrechenfunktion aufgerufen und führt die angegebene Logik aus.
In unserer Funktion zur Wertschöpfungswerbung rufen wir den Wert kontinuierlich mit der angegebenen Taste mit der For -Loop ab. Wir prüfen auch, ob der fertiggestellte Kanal aus dem Hauptkontext noch lebt. Wenn das Timeout nicht überschritten ist, ist der übergeordnete Kontext weiterhin geöffnet, aber sobald das Timeout erreicht ist, wird der Kontext abgebrochen.
In unserem Beispiel läuft die Funktion alle 1 Sekunde, bevor die Zeitüberschreitung erreicht ist. Ein Beispielausgang ist wie gezeigt:
WertAbschluss
Dies war ein kurzes und grundlegendes Tutorial, in dem Kontexte diskutierte und wie man sie in Ihren GO -Programmen einsetzt. Sie können die Dokumentation überprüfen, um mehr über Go -Kontexte zu untersuchen.