私はcurrenlty learning GOです。いくつかの基本を学んだ後、私はgoroutinesを使って異なるファイルに同時にウェブページ(スライス内のURL)をダウンロードする小さなプログラムを作成しようとしていました。ここに私が書いたコードがいくつかあります:URLからファイルにダウンロードするルーチンに行く
func downloadFromUrl(url string) {
tokens := strings.Split(url, "/")
fileName := tokens[len(tokens)-1]
// I took out the bit that download the file for testing.
fmt.Println("Downloading", url, "to", fileName)
}
実際にテスト用のページをダウンロードしたビットをコメントアウトしました。私の主な機能では、私はこれをやっている:
func main() {
urls := []string{"http://www.google.com", "http://www.yahoo.com", "http://www.google.com"}
for _, url := range urls {
fmt.Println(url);
go downloadFromUrl(url);
}
}
問題は、私が表現go downloadFromUrl(url);
を使用する場合、関数downloadFromUrlが実行されないということです。しかし、ループ内でdownloadFromUrl(url)
を使用するだけでうまくいきます。私は間違って何をしていますか?ルーチンでチャンネルを使用する必要がありますか?
1の可能性のある重複した[いただきました。このgolangコードと間違っ?](http://stackoverflow.com/questions/28958192/whats-wrong-with-this-golang-code)2. [ゴルーチンはありませんtime.Sleepが含まれていれば実行しない](http://stackoverflow.com/questions/28307783/goroutine-does-not-execute-if-time-sleep-included) – icza