package main import ( "fmt" "sync" ) func work() { fmt.Println("It's function `work()`") } func main() { wg := new(sync.WaitGroup) for i := 0; i < 10; i++ { wg.Add(1) go func(wg *sync.WaitGroup) { defer wg.Done() work() }(wg) } wg.Wait() fmt.Println("End") } /* func main() { wg := new(sync.WaitGroup) for i := 0; i < 5; i++ { wg.Add(1) go work(i, wg) } wg.Wait() fmt.Println("Горутины завершили выполнение") } func work(id int, wg *sync.WaitGroup) { defer wg.Done() fmt.Printf("Горутина %d начала выполнение \n", id) time.Sleep(2 * time.Second) fmt.Printf("Горутина %d завершила выполнение \n", id) } */