package main import ( "fmt" "net/http" "sync" ) func main() { fmt.Println("start...") var urls = []string{ "https://www.baidu.com/", "https://www.cnblogs.com/", "https://www.oschina.net/", } var wg sync.WaitGroup for _, url := range urls { wg.Add(1) go fetch(&wg, url) } wg.Wait() fmt.Println("...end") } // fetch func fetch(wg *sync.WaitGroup, url string) (string, error) { defer wg.Done() response, err := http.Get(url) if err != nil { return "", err } fmt.Println(fmt.Sprintf("request %s - response %s", url, response.Status)) return response.Status, nil }