package main import ( "fmt" "net/http" "sync" ) var wg sync.WaitGroup // 用于等待所有线程完成 func main() { urls := []string{"https://www.example.com", "https://www.google.com", "https://www.yahoo.com"} for _, url := range urls { wg.Add(1) // 每个URL启动一个goroutine go fetch(url) } wg.Wait() // 等待所有goroutine完成 } func fetch(url string) { defer wg.Done() // 在函数返回时,通知WaitGroup完成一个goroutine resp, err := http.Get(url) if err != nil { fmt.Println("Error fetching", url, err) return } defer resp.Body.Close() fmt.Println("Fetched", url, resp.Status) }
golang 多线程爬虫代码示例使用 sync.WaitGroup 来等待所有的goroutine完成。在多线程爬虫代码示例主函数中,为每个URL启动一个goroutine,并通过 wg.Add(1) 增加WaitGroup的计数器。在每个goroutine的结尾处,使用 defer wg.Done() 通知WaitGroup完成一个goroutine。 http.Get() 函数用于获取URL的内容。如果发生错误,则在控制台输出错误消息。否则,打印URL和响应状态。
转载请注明来自本站(66娱乐网)
66优乐网 » golang 多线程爬虫代码
66优乐网 » golang 多线程爬虫代码