1 // 使用channel避免竞态问题 2 package main 3 4 import ( 5 "fmt" 6 "sync" 7 ) 8 9 var ( 10 i int 11 wg sync.WaitGroup 12 ) 13 14 func AutoIncrease(ch chan int) { 15 defer wg.Done() 16 i = <-ch 17 i++ 18 ch <- i 19 } 20 21 func main() { 22 //通道读写时会阻塞 23 ch := make(chan int, 10) 24 ch <- 0 25 for k := 0; k < 10; k++ { 26 wg.Add(1) 27 go AutoIncrease(ch) 28 } 29 wg.Wait() 30 //此时channel中的值和i一样 31 // i := <-ch 32 fmt.Println(i) 33 }