以下是“Go 语言之旅”中的代码示例Range and Close:
package main
import (
"fmt"
)
func fibonacci(n int, c chan int) {
x, y := 0, 1
for i := 0; i < n; i++ {
c <- x
x, y = y, x+y
}
close(c)
}
func main() {
c := make(chan int, 10)
go fibonacci(cap(c), c)
for i := range c {
fmt.Println(i)
}
}
在倒数第五行,当省略了go
关键字时,结果没有改变。这是否意味着主Go协程在缓冲通道中发送值,然后将它们取出?
go
关键字实际上会在一个单独的线程中启动一个方法 :) - favoretti