Erlang doesn't have priorities natively, does it? As far as I am aware, there is a standard pattern to do it, like this:
receive
{high_p, Message} ->
process_high(Message)
after 0 ->
receive
{high_p, Message} ->
process_high(Message);
{low_p, Message} ->
process_low(Message)
end
end
The Go equivalent can be done with different channels for priorities and similarly nested selects, as I am sure you are aware.