Sobes.tech
Senior

Τι είναι το context στο Go και ποιος είναι ο σκοπός του;

sobes.tech AI

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

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

Οι κύριες δυνατότητες του context:

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

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

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

select {
case <-time.After(time.Second * 10):
    fmt.Println("λειτουργία ολοκληρώθηκε")
case <-ctx.Done():
    fmt.Println("λειτουργία ακυρώθηκε ή έληξε ο χρόνος")
}

Έτσι, το context βοηθά στον έλεγχο και τον συντονισμό της εκτέλεσης ασύγχρονων και μακροχρόνιων λειτουργιών.