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.