亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

go語言如何實現并行請求

小億
95
2024-01-27 14:10:55
欄目: 編程語言

Go語言可以通過使用goroutine和channel來實現并行請求。以下是一個簡單的示例:

package main

import (
	"fmt"
	"net/http"
	"time"
)

func main() {
	// 創建一個通道,用于接收請求結果
	results := make(chan string)

	// 定義一組URL
	urls := []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 := <-results
		fmt.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中收集結果。這樣,我們就可以并行發送多個請求,并在所有請求完成后處理結果。

0
平乡县| 道孚县| 左权县| 石嘴山市| 玉林市| 金秀| 罗田县| 广德县| 平和县| 高尔夫| 万州区| 图们市| 沧源| 北宁市| 水城县| 岳普湖县| 长子县| 高要市| 西充县| 昌都县| 札达县| 柞水县| 平谷区| 元氏县| 宁陕县| 屏东县| 凌海市| 容城县| 抚顺县| 大厂| 拉萨市| 梁平县| 广丰县| 西盟| 沾化县| 永定县| 安图县| 丰都县| 东丰县| 昭通市| 平泉县|