Package errgroup provides synchronization, error propagation, and Context cancelation for groups of goroutines working on subtasks of a common task.




    This section is empty.


    This section is empty.


    This section is empty.


    type Group

    type Group struct {
    	// contains filtered or unexported fields

      A Group is a collection of goroutines working on subtasks that are part of the same overall task.

      A zero Group is valid and does not cancel on error.

      Example (JustErrors)

        JustErrors illustrates the use of a Group in place of a sync.WaitGroup to simplify goroutine counting and error handling. This example is derived from the sync.WaitGroup example at

        Example (Parallel)

          Parallel illustrates the use of a Group for synchronizing a simple parallel task: the "Google Search 2.0" function from, augmented with a Context and error-handling.

          web result for "golang"
          image result for "golang"
          video result for "golang"
          Example (Pipeline)

            Pipeline demonstrates the use of a Group to implement a multi-stage pipeline: a version of the MD5All function with bounded parallelism from


            func WithContext

            func WithContext(ctx context.Context) (*Group, context.Context)

              WithContext returns a new Group and an associated Context derived from ctx.

              The derived Context is canceled the first time a function passed to Go returns a non-nil error or the first time Wait returns, whichever occurs first.

              func (*Group) Go

              func (g *Group) Go(f func() error)

                Go calls the given function in a new goroutine.

                The first call to return a non-nil error cancels the group; its error will be returned by Wait.

                func (*Group) Wait

                func (g *Group) Wait() error

                  Wait blocks until all function calls from the Go method have returned, then returns the first non-nil error (if any) from them.

                  Source Files