go璇█濡備綍瀹炵幇骞惰璇锋眰
Go璇█鍙互閫氳繃浣跨敤goroutine鍜宑hannel鏉ュ疄鐜板苟琛岃姹傘€備互涓嬫槸涓€涓畝鍗曠殑绀轰緥锛?/p>
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
// 鍒涘缓涓€涓€氶亾锛岀敤浜庢帴鏀惰姹傜粨鏋?/span>
results := make(chan string)
// 瀹氫箟涓€缁刄RL
urls := []string{
"https://www.google.com",
"https://www.baidu.com",
"https://www.github.com",
}
// 閬嶅巻URL锛屼负姣忎釜URL鍚姩涓€涓猤oroutine杩涜骞惰璇锋眰
for _, url := range urls {
go request(url, results)
}
// 绛夊緟鎵€鏈夎姹傚畬鎴愶紝骞舵敹闆嗙粨鏋?/span>
for i := 0; i < len(urls); i++ {
result := <-results
fmt.Println(result)
}
}
func request(url string, results chan<- string) {
// 鍙戦€丠TTP GET璇锋眰
resp, err := http.Get(url)
if err != nil {
results <- fmt.Sprintf("Error requesting %s: %s", url, err)
return
}
defer resp.Body.Close()
// 妯℃嫙澶勭悊鍝嶅簲鐨勫欢杩?/span>
time.Sleep(time.Second)
// 璇诲彇鍝嶅簲鍐呭
results <- fmt.Sprintf("Request to %s completed with status code %d", url, resp.StatusCode)
}
鍦ㄤ笂闈㈢殑绀轰緥涓紝鎴戜滑鍒涘缓浜嗕竴涓€氶亾results
鐢ㄤ簬鎺ユ敹璇锋眰缁撴灉銆傜劧鍚庯紝鎴戜滑瀹氫箟浜嗕竴缁刄RL锛屽苟浣跨敤go
鍏抽敭瀛楀惎鍔ㄤ簡涓€缁刧oroutine鏉ュ苟琛屽彂閫佽姹傘€傛瘡涓猤oroutine鎵цrequest
鍑芥暟锛岃鍑芥暟鍙戦€丠TTP GET璇锋眰骞跺皢鍝嶅簲缁撴灉鍙戦€佸埌閫氶亾results
涓€?/p>
鏈€鍚庯紝鎴戜滑浣跨敤涓€涓惊鐜潵绛夊緟鎵€鏈夎姹傚畬鎴愶紝骞朵粠閫氶亾results
涓敹闆嗙粨鏋溿€傝繖鏍凤紝鎴戜滑灏卞彲浠ュ苟琛屽彂閫佸涓姹傦紝骞跺湪鎵€鏈夎姹傚畬鎴愬悗澶勭悊缁撴灉銆?/p>