Go の Python スタイル ジェネレーター
Go では、ツアーの質問 66 で例示されているように、ゴルーチンを Python ジェネレーターのように利用できます。行く。提供されたコードは、質問 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 チャネルは Python ジェネレーターを模倣できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。