在所有 goroutine bing 发出后,如何使用 goroutine 按顺序打印数字?这是随机打印数字的代码:func main() { var wg sync.WaitGroup wg.Add(10) for i := 1; i <= 10; i++ { go func(i int) { defer wg.Done() fmt.Printf("i = %d\n", i) }(i) } wg.Wait()发出 goroutine 以打印如下数字,这不是我想要的解决方案。func main() { var wg sync.WaitGroup for i := 1; i <= 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Printf("i = %d\n", i) }(i) wg.Wait() }我希望所有 goroutine 都被发出,然后让它们按顺序打印数字。
1 回答

翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
func main() {
wg.Add(10)
count := 10
cBegins := make([]chan interface{}, count)
for i := range cBegins {
cBegins[i] = make(chan interface{})
}
go func() {
cBegins[0] <- struct {}{}
}()
for i := 0; i < count; i++ {
go func(i int) {
defer wg.Done()
<-cBegins[i]
fmt.Printf("i = %d\n", i)
if i < 9 {
cBegins[i+1] <- struct {}{}
}
}(i)
}
wg.Wait()
}
- 1 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消