package main import ( "fmt" "sync" "time" ) func service(wg *sync.WaitGroup, instance int) { time.Sleep(2 * time.Second) fmt.Println("Service called on instance", instance) wg.Done() } func main() { wgExample() } func wgExample() { fmt.Println("main() started") var wg sync.WaitGroup for i := 1; i <= 3; i++ { wg.Add(1) // increment counter go service(&wg, i) } wg.Wait() // blocks here fmt.Println("main() stopped") }