Heim >Backend-Entwicklung >Golang >Können Go-Kanäle Python-Generatoren nachahmen?
Generatoren im Python-Stil in Go
In Go können Goroutinen wie Python-Generatoren verwendet werden, wie in Frage 66 der Tour von veranschaulicht Gehen. Der bereitgestellte Code schreibt Frage 66 auf vereinfachte Weise um:
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
Alternativer Ansatz
Um diese Probleme zu beheben, berücksichtigen Sie Folgendes Folgender Code:
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) } }
In diesem Beispiel:
Das obige ist der detaillierte Inhalt vonKönnen Go-Kanäle Python-Generatoren nachahmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!