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?