github.com/maikovskiys/l1tasks@v0.0.0-20230927052451-6436d7687dc9/learn/dev11/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"sync"
     6  )
     7  
     8  /*
     9  Что выведет данная программа и почему?
    10  
    11  deadlock из за передачи копии wg в горутины.
    12  
    13  Если передадим указатель wg, все ок
    14  */
    15  func main() {
    16  	wg := sync.WaitGroup{}
    17  	for i := 0; i < 5; i++ {
    18  		wg.Add(1)
    19  		go func(wg sync.WaitGroup, i int) {
    20  			fmt.Println(i)
    21  			wg.Done()
    22  		}(wg, i)
    23  	}
    24  	wg.Wait()
    25  	fmt.Println("exit")
    26  }