You don't have to use a channel for coordination. Here is a lexer implementation (in C!) that very closely follows Rob Pike's talk and uses a ring buffer for coordination and is plenty fast.
https://github.com/lpereira/lwan/blob/master/src/lib/lwan-te...
If you watch the talk carefully, Rob Pike himself mentions this near the end of the talk.