共計 906 個字符,預計需要花費 3 分鐘才能閱讀完成。
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
中收集結果。這樣,我們就可以并行發送多個請求,并在所有請求完成后處理結果。
丸趣 TV 網 – 提供最優質的資源集合!
正文完