参考答案
结论:通过channel控制协程结果按序输出,避免并发乱序。核心要点:1.启动10个协程并发执行,各自生成数字但完成顺序不确定;2.主协程预建10个channel,协程i向ch[i]发送数字i;主协程按索引0~9依次接收并打印,天然升序。3.替代方案:用sync.WaitGroup等待所有协程将结果写入切片固定位置,再遍历排序输出。示例:chs:=make([]chan int,10); for i:=range chs{chs[i]=make(chan int); go func(i int){chs[i]<-i}()}; for i:=0;i<10;i++{fmt.Println(<-chs[i])}。该方法无锁且高效。