Channels are one of the primary ways for goroutines to synchronize with each other. Therefore they contain a mechanism to ensure that only one goroutine at a time is able to pull a data item from a channel and that the data item retrieved is not duplicated.
You can't really count on any particular sequence of multiple goroutines reading successfully from the same channel as which specific goroutine's read will complete depends on the multi-threading algorithm used.
See this discussion, Goroutines are cooperatively scheduled. Does that mean that goroutines that don't yield execution will cause goroutines to run one by one?
You can depend on if multiple goroutines are reading from the same channel. Then when there is data in the channel to be read, one of those goroutines will succeed in its read and the data read will not be read by any of the other goroutines that are waiting on a read from the channel to succeed.
See Concurrency from golang-book.com which explains concurrency and goroutines and channels.
See as well How to use channels to safely synchronise data in Go.
See as well this answer which describes using channels rather than a synchronization primitive such as a mutex to maintain a dynamic list of listeners: https://stackoverflow.com/a/18897083/1466970
See also this long and somewhat exhausting description of Anatomy of Channels in Go - Concurrency in Go.