我正在学习去,遵循在线教程“围棋之旅”。为什么不去执行子程序
在本练习:https://tour.golang.org/concurrency/10
继续之前解决这个问题,我想尝试一些简单:
func Crawl(url string, depth int, fetcher Fetcher) {
fmt.Println("Hello from Crawl")
if depth <= 0 {
return
}
body, urls, err := fetcher.Fetch(url)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("found: %s %q\n", url, body)
for _, u := range urls {
fmt.Println("in loop with u = %s", u)
go Crawl(u, depth-1, fetcher) //I added "go" here
}
}
我说的唯一的事情就是go
命令递归调用前右Crawl
。我预计它不应该改变太多的行为。
但是打印输出:
Hello from Crawl
found: http://golang.org/ "The Go Programming Language"
in loop with u = http://golang.org/pkg/
in loop with u = http://golang.org/cmd/
我期望看到Hello from Crawl
为循环的每个迭代。 为什么我的Crawl
子程序得不到执行?
我同意链接的问题的答案我的也是如此。 –