select blocks until one of its cases can proceed, choosing randomly when multiple are ready. A default case makes it non-blocking, executing immediately if no channel is ready.
When multiple cases are ready, select picks one uniformly at random — no priority ordering
Nil channels are never ready — use this to dynamically disable a case
time.After creates a new timer and channel on every call — use time.NewTimer in loops to avoid leaks
default makes select non-blocking — runs immediately if no channel is ready
select with only a default case and no channels is a spin loop — avoid