golang面试经之笔试2

 // 以下代码输出什么?

func main() {
   runtime.GOMAXPROCS(2)
   wg := sync.WaitGroup{}
   wg.Add(10)
   for i := 0; i < 10; i++ {
      go func(i int) {
         fmt.Println("i: ", i)
         wg.Done()
      }(i)
   }

   wg.Wait()

}

 

 

答案:0-9随机输出

 

问: 如果全部输出10, 能不能做到?怎么做?   ##PS出这题真是chun....

 

答案:

代码改成即可全部输出10.

func main() {
   runtime.GOMAXPROCS(1)
   wg := sync.WaitGroup{}
   wg.Add(10)
   for i := 0; i < 10; i++ {
      go func() {
         fmt.Println("i: ", i)
         wg.Done()
      }()
   }

   wg.Wait()

}

你可能感兴趣的:(golang面试)