channel和range
package mainimport "fmt"func main() { c:= make(chan int) go func() { for i:=0;i<3;i++{ c<-i } // 当不需要再次发送数据后需要关闭channel,如果被关闭可能会引发死锁 close(c) }() // range 会阻塞等待 for num := range c{ fmt.Println(num) }}
012
channel和select
package mainimport "fmt"func yield(c,quit chan int) { temp:=2 for { select { case c<-temp: temp*=2 case <-quit: return } }}func main() { c :=make(chan int) quit :=make(chan int) go func() { for i:=0;i<10;i++ { fmt.Println(<-c) } quit<-0 }() yield(c,quit)}
2481632641282565121024