Sobes.tech
Junior — Middle

¿Puedes compartir un ejemplo de cómo implementaste el manejo de errores usando error.Group en tus proyectos?

sobes.tech AI

Respuesta de la IA

En el paquete errors de Go con el tipo Group (por ejemplo, de golang.org/x/sync/errgroup) permite recopilar y manejar fácilmente múltiples errores que ocurren en goroutines paralelas.

Ejemplo de uso de errgroup.Group para ejecutar tareas en paralelo con manejo de errores:

import (
    "fmt"
    "golang.org/x/sync/errgroup"
)

func processTasks() error {
    var g errgroup.Group

    tareas := []func() error{
        func() error { /* tarea 1 */ return nil },
        func() error { /* tarea 2 */ return fmt.Errorf("error en la tarea 2") },
        func() error { /* tarea 3 */ return nil },
    }

    for _, tarea := range tareas {
        t := tarea
        g.Go(func() error {
            return t()
        })
    }

    if err := g.Wait(); err != nil {
        // Manejar la primera error encontrada
        return err
    }
    return nil
}

En mis proyectos, he utilizado errgroup para ejecutar varias operaciones independientes en paralelo y recopilar errores de manera ordenada, lo que simplifica el código y mejora la legibilidad.