亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么函數會提前返回?

為什么函數會提前返回?

Go
慕的地6264312 2021-05-14 14:15:26
我剛剛開始學習go,并且一直在完成巡回演出。最后一個練習是編輯Web爬網程序以并行爬網,而無需重復。這是練習的鏈接:http : //tour.golang.org/#70這是代碼。我只更改了爬網和主要功能。因此,我將發布這些內容以使其保持整潔。 // Crawl uses fetcher to recursively crawl    // pages starting with url, to a maximum of depth.    var used = make(map[string]bool)    var urlchan = make(chan string)    func Crawl(url string, depth int, fetcher Fetcher) {        // TODO: Fetch URLs in parallel.        // Done: Don't fetch the same URL twice.        // This implementation doesn't do either:        done := make(chan bool)        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)        go func() {            for _, i := range urls {                urlchan <- i            }            done <- true        }()        for u := range urlchan {            if used[u] == false {                used[u] = true                go Crawl(u, depth-1, fetcher)            }            if <-done == true {                break            }        }        return    }    func main() {        used["http://golang.org/"] = true        Crawl("http://golang.org/", 4, fetcher)    }問題是,當我運行程序時,爬網程序在打印后停止    not found: http://golang.org/cmd/僅當我嘗試使程序并行運行時,才會發生這種情況。如果我讓它線性運行,那么所有網址都可以正確找到。注意:如果我沒有正確執行此操作(我的意思是并行),則表示歉意。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號