中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
凉城县| 喜德县| 乐山市| 汝南县| 峨眉山市| 石狮市| 无为县| 北票市| 碌曲县| 长寿区| 武隆县| 建湖县| 呼图壁县| 蒙阴县| 乌恰县| 榆树市| 陆川县| 印江| 建昌县| 平度市| 屏山县| 绥滨县| 龙海市| 攀枝花市| 惠水县| 铜川市| 华阴市| 犍为县| 当雄县| 盘山县| 康保县| 满洲里市| 武安市| 昌黎县| 沅江市| 德庆县| 洛宁县| 宜兰市| 许昌县| 东乌珠穆沁旗| 虹口区|