Programming Code Center(PCC)
[GO]

(PCC)::[How-to-use-wait-group-for-multiple-goroutines-to-finish-in-go-language]::[go]

File Name : waitgroups.go

package main

import (
    "fmt"
    "sync"
    "time"
)

func worker(id int, wg *sync.WaitGroup) {

    defer wg.Done()

    fmt.Printf("Worker %d starting\n", id)

    time.Sleep(time.Second)
    fmt.Printf("Worker %d done\n", id)
}

func main() {

    var wg sync.WaitGroup

    for i := 1; i <= 5; i++ {
        wg.Add(1)
        go worker(i, &wg)
    }

    wg.Wait()
}

Output :

waitgroups.jpg