Go By Examples
最近又重新翻了一遍 Go 的在线文档和相关文章,发现对 Go 的并发机制理解还不是很深,故在 Github 上建了一个 repo,记录一下几种典型的 go concurrency patterns。
关于 Closure
Go 从语言级支持 closure,而一个 closure 是一个“函数”,它允许访问函数外部的变量(此时称该函数被“绑定”到了这个变量上) —— 这一点对于实现并发很重要,下面很多所谓的并发模式都是基于这种 closure 机制的。下面举一个最简单的 fibonacci 数列的实现:
func fibonacci() func() int {
x, y := 0, 1
return func() int {
z := x + y
x, y = y, z
return z
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}几种典型的 Go 并发模式
详见 repo 代码吧。