goroutine
奉行通过通信来共享内存,而不是共享内存来通信
func main() {
c := make(chan bool)
go func() {
fmt.Println("Go Go Go!!!")
c <- true
close(c)
}()
for v := range c {
}
}
-可处理一个或多个 channel
的发送和接收
-同时有多个可用的 channel
是按随机顺序处理
-可用空的 select
来阻塞 main
函数
-可设置超时
func main() {
c := make(chan int)
for v := range c {
fmt.Println(v)
}
}()
for {
select {
case c <- 0:
case c <- 1:
}
}
select
设置超时
var c chan string
i := 0
for {
fmt.Println(<-c)
c <- fmt.Sprintf("From Pingpang: Hi, #%d", i)
i++
}
}
func main() {
c = make(chan string)
go Pingpang()
for i := 0; i < 10; i++ {
c <- fmt.Sprintf("From Pingpang: Hello, #%d", i)
fmt.Println(<-c)
}