Go 中的Python 風格的生成器
在Go 中,goroutines 可以像Python 生成器一樣使用,如問題66 中的範例去。提供的程式碼以簡化的方式重寫了問題66:
package main import "fmt" func fibonacci(c chan int) { x, y := 1, 1 for { c <- x x, y = y, x + y } } func main() { c := make(chan int) go fibonacci(c) for i := 0; i < 10; i++ { fmt.Println(<-c) } }
分析
替代方法
要解決這些問題,請考慮以下程式碼:
package main import "fmt" func fib(n int) chan int { c := make(chan int) go func() { x, y := 0, 1 for i := 0; i <= n; i++ { c <- x x, y = y, x+y } close(c) }() return c } func main() { for i := range fib(10) { fmt.Println(i) } }
在此範例中:
以上是Go Channels 可以模仿 Python 生成器嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!