我正在浏览 golang 并进行最后的练习,以将网络爬虫更改为并行爬取而不是重复爬取 ( http://tour.golang.org/#73 )。我改变的只是抓取功能。
    var used = make(map[string]bool)
    func Crawl(url string, depth int, fetcher Fetcher) {
        if depth <= 0 {
            return
        }
        body, urls, err := fetcher.Fetch(url)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Printf("\nfound: %s %q\n\n", url, body)
        for _,u := range urls {
            if used[u] == false {
                used[u] = true
                Crawl(u, depth-1, fetcher)
            }
        }
        return
    }
为了使其并发,我在调用 Crawl 函数之前添加了 go 命令,但程序没有递归调用 Crawl 函数,只找到“ http://golang.org/ ”页面而没有其他页面。
为什么我在函数 Crawl 的调用中添加 go 命令时程序不起作用?