Оператор default в select блоке позволяет выполнить действие, если ни один из каналов, указанных в case ветках, не готов к приему или передаче данных без блокировки.
Он используется для реализации неблокирующего чтения или записи из/в каналы, а также для установки тайм-аутов.
Пример использования default для неблокирующего чтения из канала:
go
В этом примере, если канал ch пуст, выполнение перейдет в ветку default, и программа не будет ждать поступления данных.
Пример использования default для неблокирующей записи в канал:
go
Здесь, если канал ch полон, попытка записи в ветке case ch <- data: заблокируется. default позволяет избежать этого и выполнить альтернативное действие.
default является опциональным. Если он отсутствует и ни один из каналов не готов, select блок будет блокировать выполнение горутины до тех пор, пока один из каналов не станет готовым.