Sobes.tech
Senior

Wofür wird der Kontext verwendet? Wie wurde er in der Praxis genutzt?

sobes.tech KI

Antwort von AI

In Go wird context verwendet, um Signale zum Abbrechen, Zeitlimits und andere Werte zwischen Goroutinen zu übertragen, insbesondere bei der Arbeit mit Anfragen, Timeouts und Abbrüchen von Operationen.

Praktische Anwendung:

  • Abbruch langer Operationen beim Schließen einer HTTP-Anfrage.
  • Übertragung eines Zeitlimits, damit eine Operation nicht länger als die festgelegte Zeit dauert.
  • Übertragung von Metadaten (z.B. Anforderungs-IDs) durch die Aufrufkette.

Beispiel für die Verwendung:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operation abgeschlossen")
    case <-ctx.Done():
        fmt.Println("Operation abgebrochen")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Hier wird die Operation nach 2 Sekunden abgebrochen, auch wenn sie auf 5 Sekunden ausgelegt ist.