Channels, When the program flow exit from the infinite for { select }

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.