> With a buffered channel, the receiver will not get the message until the buffer is full.
This is wrong. https://golang.org/doc/effective_go.html#channels
> Receivers always block until there is data to receive. If the channel is unbuffered, the sender blocks until the receiver has received the value. If the channel has a buffer, the sender blocks only until the value has been copied to the buffer; if the buffer is full, this means waiting until some receiver has retrieved a value.