Take a look at this condensed version of the code you provided:
go func() {
// loop sending values to channel
}()
fmt.Printf("many reads: %d \n", reads)
The go keyword fires up a parallel goroutine (like a mini-thread) which runs the function specified, which in this case is your inline function that sends values to the channel. The fmt.Printf code is executed directly after the goroutine is created; it will not wait for the goroutine to do anything.