面试真题

Go · 中等 · 百度

Go select

中等 Go 🎤 百度
参考答案
结论:select用于监听多个channel的读写,实现多路复用。核心要点:每个case对应一个通信操作;随机选择可运行case;无default且均阻塞时等待;可配合time.After超时。原理:编译器将select转为运行时selectgo,对所有case的channel排序加锁,检查就绪(缓冲有数据/可写/关闭),有则随机执行;无则goroutine入等待队列挂起,channel就绪时唤醒。示例:select{ case <-ch1:; case ch2<-1:; default: };避免空select{}死锁。
题目整理自公开面经,答案由校招宝自研生成,仅供参考