go语言如何实现并行请求

   2025-01-31 6230
核心提示:Go语言可以通过使用goroutine和channel来实现并行请求。以下是一个简单的示例:package mainimport (fmtnet/httptime)func main(

Go语言可以通过使用goroutine和channel来实现并行请求。以下是一个简单的示例:

package mainimport ("fmt""net/http""time")func main() {// 创建一个通道,用于接收请求结果results := make(chan string)// 定义一组URLurls := []string{"https://www.google.com","https://www.baidu.com","https://www.github.com",}// 遍历URL,为每个URL启动一个goroutine进行并行请求for _, url := range urls {go request(url, results)}// 等待所有请求完成,并收集结果for i := 0; i < len(urls); i++ {result := <-resultsfmt.Println(result)}}func request(url string, results chan<- string) {// 发送HTTP GET请求resp, err := http.Get(url)if err != nil {results <- fmt.Sprintf("Error requesting %s: %s", url, err)return}defer resp.Body.Close()// 模拟处理响应的延迟time.Sleep(time.Second)// 读取响应内容results <- fmt.Sprintf("Request to %s completed with status code %d", url, resp.StatusCode)}

在上面的示例中,我们创建了一个通道results用于接收请求结果。然后,我们定义了一组URL,并使用go关键字启动了一组goroutine来并行发送请求。每个goroutine执行request函数,该函数发送HTTP GET请求并将响应结果发送到通道results中。

最后,我们使用一个循环来等待所有请求完成,并从通道results中收集结果。这样,我们就可以并行发送多个请求,并在所有请求完成后处理结果。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言