猿问

如何实现等待goroutines执行完成后退出main函数?

之前爬虫用python写总是出问题,于是换成了Go来写,大致内容如下:
for;next_url!=first_url;{
count+=1
strBody=getContent(next_url)
re=regexp.MustCompile("photos-view-id-\\d+.html")
next_url=getNextUrl(strBody)
re=regexp.MustCompile("http://xxxx/data/[^\"]+")
pic_url=re.FindAllString(strBody,2)[1]
filename=fmt.Sprintf("%03d.jpg",count)
godownloadFromUrl(pic_url,save_path+filename)
}
但是这样会有一个问题就是我的downloadFromUrl还没执行完成时,程序已经退出了,导致最后几个文件未下载成功。有什么方法可以等待操作完成之后退出程序的么?
凤凰求蛊
浏览 395回答 2
2回答

白衣染霜花

参考@方泽图的回复,实现方式如下:varwgsync.WaitGroup...for;next_url!=first_url;{....filename=fmt.Sprintf("%03d.jpg",count)wg.Add(1)gofunc(pic_urlstring,savetostring){deferwg.Done()downloadFromUrl(pic_url,saveto)}(pic_url,saveto)}wg.Wait()
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答