Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Gooutines Go Boleh Meniru Penjana Python?
Penjana dalam Go: Pendekatan Pythonic
Dalam Tour of Go, Soalan 66 memperkenalkan goroutine sebagai mekanisme serentak yang berkuasa. Tetapi mereka juga boleh meniru penjana Python.
Pertimbangkan pelaksanaan berikut bagi penjana Fibonacci menggunakan goroutine:
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) } }
Soalan dan Jawapan
Untuk mengatasi isu ini, anda boleh menggunakan pendekatan yang lebih Pythonic:
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) } }
Dalam versi diubah suai ini:
Pendekatan ini menghalang kebocoran memori dan membolehkan penjanaan nombor Fibonacci yang lebih fleksibel.
Atas ialah kandungan terperinci Bagaimanakah Gooutines Go Boleh Meniru Penjana Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!