This question already has an answer here:
- No output from goroutine in Go 3 answers
This recursive function works as expected (returns 5 lines with numbers 5 to 1):
package main
import (
"fmt"
)
func recur(iter int) {
if iter <= 0 {
return
}
fmt.Println(iter)
recur(iter-1)
}
func main() {
recur(5)
}
this one does not (returns only 1 line with number 5):
package main
import (
"fmt"
)
func recur(iter int) {
if iter <= 0 {
return
}
fmt.Println(iter)
go recur(iter-1)
}
func main() {
recur(5)
}
The difference is that in the second implementation, function calls itself as a goroutine. (line go recur(iter-1)
)
So can someone explain this behaviour?
</div>