package main
import (
"fmt"
"sync"
"time"
)
func gobOne(wg *sync.WaitGroup) {
time.Sleep(time.Second * 1)
fmt.Println("I print 1st")
wg.Done()
}
func gobTwo(wg *sync.WaitGroup) {
time.Sleep(time.Second * 2)
fmt.Println("I print 2nd")
wg.Done()
}
func main() {
var wg sync.WaitGroup
wg.Add(2)
go gobOne(&wg)
go gobTwo(&wg)
wg.Wait()
/*
Code below wg.Wait() will not run until
goroutines added to the WaitGroup are completed
*/
fmt.Println("I print 3rd")
}