Как работает select с несколькими готовыми каналами?

Middle
156 просмотров
AFK Offer AI

Если несколько case готовы одновременно, Go выбирает случайный (uniform random). Это сделано намеренно чтобы избежать starvation — если бы выбирался первый, нижние case никогда не сработали бы при загруженных каналах. Рандом реализован через fastrand в runtime. Default case проверяется только если все каналы заблокированы.

Следующий вопрос

Что выведет: var x int8 = 127; x++; fmt.Println(x)?