协程同步:关闭通道-对阻塞的通道进行测试
ch := make(chan float64)
defer close(ch)v, ok := <-ch // ok is true if v received valueif v, ok := <-ch; ok {
process(v)
}v, ok := <-ch
if !ok {
break
}
process(v)链接
Last updated
ch := make(chan float64)
defer close(ch)v, ok := <-ch // ok is true if v received valueif v, ok := <-ch; ok {
process(v)
}v, ok := <-ch
if !ok {
break
}
process(v)Last updated
package main
import "fmt"
func main() {
ch := make(chan string)
go sendData(ch)
getData(ch)
}
func sendData(ch chan string) {
ch <- "Washington"
ch <- "Tripoli"
ch <- "London"
ch <- "Beijing"
ch <- "Tokio"
close(ch)
}
func getData(ch chan string) {
for {
input, open := <-ch
if !open {
break
}
fmt.Printf("%s ", input)
}
}go sendData(ch)
getData(ch)func sendData(ch chan string) {
ch <- "Washington"
ch <- "Tripoli"
ch <- "London"
ch <- "Beijing"
ch <- "Tokio"
close(ch)
}for {
input, open := <-ch
if !open {
break
}
fmt.Printf("%s ", input)
}for input := range ch {
process(input)
}