Concurrency 如何打印并发和递归函数的结果?

Concurrency 如何打印并发和递归函数的结果?,concurrency,for-loop,go,Concurrency,For Loop,Go,我已经完成了围棋之旅,我已经完成了网络爬虫练习,但是我认为我用来打印所有结果的技术可能效率低下 这是我的密码。我只编辑了爬网和主要功能,所以我将发布它。以下是练习()的链接 因为爬网函数是递归的,所以很难在爬网函数中使用“close(results)”,但按照我的方法,我必须找到每次使用的变量的长度 有更好的方法吗?要等待goroutine集合完成,请使用sync.WaitGroup 我相信你会发现官方文件中的例子非常熟悉 引述: var wg sync.WaitGroup var urls

我已经完成了围棋之旅,我已经完成了网络爬虫练习,但是我认为我用来打印所有结果的技术可能效率低下

这是我的密码。我只编辑了爬网和主要功能,所以我将发布它。以下是练习()的链接

因为爬网函数是递归的,所以很难在爬网函数中使用“close(results)”,但按照我的方法,我必须找到每次使用的变量的长度


有更好的方法吗?

要等待goroutine集合完成,请使用
sync.WaitGroup

我相信你会发现官方文件中的例子非常熟悉

引述:

var wg sync.WaitGroup var urls = []string{ "http://www.golang.org/", "http://www.google.com/", "http://www.somestupidname.com/", } for _, url := range urls { // Increment the WaitGroup counter. wg.Add(1) // Launch a goroutine to fetch the URL. go func(url string) { // Fetch the URL. http.Get(url) // Decrement the counter. wg.Done() }(url) } // Wait for all HTTP fetches to complete. wg.Wait()
var wg sync.WaitGroup var url=[]字符串{ "http://www.golang.org/", "http://www.google.com/", "http://www.somestupidname.com/", } 对于u,url:=范围url{ //递增WaitGroup计数器。 工作组.添加(1) //启动goroutine以获取URL。 go func(url字符串){ //获取URL。 http.Get(url) //减小计数器的数值。 wg.Done() }(网址) } //等待所有HTTP回迁完成。 wg.Wait() 这将阻塞,直到所有工作完成

如果您真的希望在收集结果时逐步打印它们,最简单的方法是在抓取程序本身中进行

    for i := range results
var wg sync.WaitGroup var urls = []string{ "http://www.golang.org/", "http://www.google.com/", "http://www.somestupidname.com/", } for _, url := range urls { // Increment the WaitGroup counter. wg.Add(1) // Launch a goroutine to fetch the URL. go func(url string) { // Fetch the URL. http.Get(url) // Decrement the counter. wg.Done() }(url) } // Wait for all HTTP fetches to complete. wg.Wait()