面试真题

Go · 简单 · 滴滴

发给10个协程,如何打出升序的数字

简单 Go 🎤 滴滴
参考答案
结论:通过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])}。该方法无锁且高效。
题目整理自公开面经,答案由校招宝自研生成,仅供参考