Когда в select несколько case-ов готовы одновременно, Go выбирает один случайным образом. Это не баг, а фича — предотвращает starvation. Если бы выбирался всегда первый готовый case, остальные каналы могли бы вечно голодать. Рандомизация реализована внутри runtime.selectgo: массив case-ов перемешивается при каждом вызове select. Поэтому нельзя полагаться на порядок case-ов в select — Go намеренно не даёт приоритет. Если нужен приоритет, используй вложенные select или отдельные goroutine.
Что такое randomized select?
Middle+
424 просмотровAFK Offer AI
Как работают spans и traces?