Junior — Middle
Μπορείς να μοιραστείς ένα παράδειγμα για το πώς υλοποίησες τη διαχείριση σφαλμάτων με το error.Group στα έργα σου;
sobes.tech AI
Απάντηση από AI
Στο πακέτο errors της Go με τον τύπο Group (για παράδειγμα, από το golang.org/x/sync/errgroup) είναι εύκολο να συλλέξετε και να διαχειριστείτε πολλαπλά σφάλματα που προκύπτουν σε παράλληλες goroutines.
Παράδειγμα χρήσης του errgroup.Group για παράλληλη εκτέλεση εργασιών με διαχείριση σφαλμάτων:
import (
"fmt"
"golang.org/x/sync/errgroup"
)
func processTasks() error {
var g errgroup.Group
εργασίες := []func() error{
func() error { /* εργασία 1 */ return nil },
func() error { /* εργασία 2 */ return fmt.Errorf("σφάλμα στην εργασία 2") },
func() error { /* εργασία 3 */ return nil },
}
for _, εργασία := range εργασίες {
e := εργασία
g.Go(func() error {
return e()
})
}
if err := g.Wait(); err != nil {
// Διαχείριση του πρώτου σφάλματος
return err
}
return nil
}
Στα έργα μου, έχω χρησιμοποιήσει το errgroup για να ξεκινήσω πολλές ανεξάρτητες λειτουργίες παράλληλα και να συλλέξω σφάλματα με οργανωμένο τρόπο, κάτι που απλοποιεί τον κώδικα και βελτιώνει την αναγνωσιμότητα.