Channels and Select
Close and Range
Closing a channel tells a range loop when no more values are coming.
Close and Range
close_range.go
package main
import "fmt"
func main() {
var extra =
stream := make(chan string, 3)
stream <- "alpha"
stream <- "beta"
stream <- extra
close(stream)
count := 0
for item := range stream {
count++
fmt.Println("item=", item)
}
fmt.Println("count=", count)
}
package main
import "fmt"
func main() {
var extra =
stream := make(chan string, 3)
stream <- "alpha"
stream <- "beta"
stream <- extra
close(stream)
count := 0
for item := range stream {
count++
fmt.Println("item=", item)
}
fmt.Println("count=", count)
}
package main
import "fmt"
func main() {
var extra =
stream := make(chan string, 3)
stream <- "alpha"
stream <- "beta"
stream <- extra
close(stream)
count := 0
for item := range stream {
count++
fmt.Println("item=", item)
}
fmt.Println("count=", count)
}
close channel
A `for range` loop over a channel stops after the channel is closed and drained.