此递归函数按预期工作(返回5行,数字5到1):
package main
import (
"fmt"
)
func recur(iter int) {
if iter <= 0 {
return
}
fmt.Println(iter)
recur(iter-1)
}
func main() {
recur(5)
}
Run Code Online (Sandbox Code Playgroud)
这个没有(只返回1行5号):
package main
import (
"fmt"
)
func recur(iter int) {
if iter <= 0 {
return
}
fmt.Println(iter)
go recur(iter-1)
}
func main() {
recur(5)
}
Run Code Online (Sandbox Code Playgroud)
不同之处在于,在第二个实现中,函数将自身称为goroutine.(线go recur(iter-1))
有人可以解释这种行为吗?