select语句类似switch语句,但是与switch语句不同的是,switch语句不会阻塞,select语句中如果没有满足条件的case语句出现,则会阻塞,直到出现一条可以执行的case语句为止,如果有多条可执行的case语句,则随机选择一条执行。
参考资料:
如上图所示,创建通道的时候,如果使用无缓冲通道(如果通道没有初始化,通道值会是nil,对它进行操作将会报错:[chan receive (nil chan)],[chan send (nil chan)]),那么直接往里面写数据就会导致以下错误,因为无缓冲通道是阻塞的,即如果往里写一个数据,如果通道另外一端没有事先从通道里面取数据,就会导致阻塞。
参考资料: