2. Каждый из каналов блокируется мьютексом.
3. Происходит последовательная попытка взаимодействия (запись или чтение) с каналами, перечисленными внутри оператора select. При наличии секции default, чтение и запись происходят в неблокирующем режиме(об этом далее).
4. В случае, если ни один из каналов недоступен для взаимодействия, и секция default отсутствует, то текущая горутина переходит в состояние waiting до тех пор, пока какой то из каналов не станет доступен.
5. С каналов снимается блокировка мьютексом.
Почему при наличии секции default внутри оператора select, каналы опрашиваются в неблокирующем режиме? Почему выполнение горутины не приостанавливается на попытке записи или чтения канала, если запись или чтение в данный момент не возможны?
Ответ кроется в функциях chanrecv и chansend, которые отвечают непосредственно за чтение из канала и отправку данных в канал: