オンラインチュートリアル「Goのツアー」に従って、私は勉強しています。このエクササイズでなぜサブルーチンが実行されないのですか
:問題を解決するために行く前に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
サブルーチンが実行されないのはなぜですか?
は、私はそのリンクされた質問の答え鉱山にも同意します。 –