select компилируется в вызов runtime.selectgo. Все каналы лочатся в определённом порядке (по адресу, для избежания deadlock). Проверяются готовые case. Если готовых нет и нет default — горутина добавляется в очереди всех каналов и паркуется. При пробуждении — удаляется из остальных очередей. Рандомный порядок через shuffle массива case.
Как реализован select на уровне runtime?
Senior
75 просмотровAFK Offer AI
Что такое pgtype для PostgreSQL?