1. Channels
Channels是一个阻塞操作,只有在通信双方写入/读完变量,channels后续的操作才能执行。
通过make(chan type)创建channel。使用close()函数关闭channel,或者通过子函数执行完毕后关闭channel。
channels.go源代码介绍了channels的使用。
采用close()函数关闭channel
package main
import "fmt"
func main(){
ch := make(chan int, 10)
ch <- 11
ch <- 12
close(ch)
for x := range ch {
fmt.Println(x)
}
}
解释执行。
$ go run channels.go
11
12
采用子函数关闭channel
函数执行完毕,阻塞结束,并发送一个signal。
package main
import "fmt"
func main() {
ch := make(chan string)
go func(){
ch <- "I finished it!"
}()
msg := <-ch
fmt.Println(msg)
}
解释执行。
$ go run channels.go
I finished it!
参考资料
[1. Go语言的Channel例子] https://play.golang.org/p/Kd8B0T_JGK
[2. 通过Channel阻塞函数,直到执行完毕发送信号] https://www.jianshu.com/p/24ede9e90490