Sobes.tech
Senior

Για τι χρησιμοποιείται το πλαίσιο; Πώς το χρησιμοποιήσατε στην πράξη;

sobes.tech AI

Απάντηση από AI

Στη Go, το context χρησιμοποιείται για τη μετάδοση σημάτων ακύρωσης, χρονικών ορίων και άλλων τιμών μεταξύ goroutines, ειδικά όταν εργάζεστε με αιτήματα, χρονόμετρα και ακυρώσεις λειτουργιών.

Πρακτική εφαρμογή:

  • Ακύρωση μακροχρόνιων λειτουργιών κατά το κλείσιμο ενός αιτήματος HTTP.
  • Μετάδοση χρονικού ορίου ώστε μια λειτουργία να μην διαρκεί περισσότερο από τον καθορισμένο χρόνο.
  • Μετάδοση μεταδεδομένων (π.χ. αναγνωριστικά αιτημάτων) μέσω της αλυσίδας κλήσεων.

Παράδειγμα χρήσης:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Ολοκλήρωση λειτουργίας")
    case <-ctx.Done():
        fmt.Println("Ακύρωση λειτουργίας")
    }
}

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

Εδώ, η λειτουργία θα διακοπεί μετά από 2 δευτερόλεπτα, ακόμα και αν έχει προγραμματιστεί για 5.