default делает select неблокирующим: если ни один case не готов, сразу выполняется default. Используют для опроса каналов, таймаутов (в паре с time.After) и неблокирующих отправок/приёмов.
select {
case v := <-ch: return v
default: return 0, ErrNoData
}