This section will talk about nil channels, which are a special sort of channel that will always block. The name of the program will be nilChannel.go and will be presented in four parts.
The first part of the program contains the expected preamble:
package main import ( "fmt" "math/rand" "time" )
The second portion contains the implementation of the addIntegers() function:
func addIntegers(c chan int) { sum := 0 t := time.NewTimer(time.Second) for { select { case input := <-c: sum = sum + input case <-t.C: c = nil fmt.Println(sum) } } }
The addIntegers() function stops after the time defined in the time.NewTimer() function passes and will go to the relevant branch of the case statement. There, it makes c a...