Maison > Article > développement back-end > Les canaux Go peuvent-ils imiter les générateurs Python ?
Générateurs de style Python dans Go
Dans Go, les goroutines peuvent être utilisées comme des générateurs Python, comme illustré dans la question 66 du Tour de Aller. Le code fourni réécrit la question 66 de manière simplifiée :
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) } }
Analyse
Approche alternative
Pour résoudre ces problèmes, considérez la code suivant :
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) } }
Dans ce exemple :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!