| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package main
- import (
- "fmt"
- "io"
- "net/http"
- "sync"
- )
- type Downloader interface {
- Download(url string)
- }
- type Task struct{}
- func (t *Task) Download(url string) {
- fmt.Println("Downloading:", url)
- resp, err := http.Get(url)
- if err != nil {
- fmt.Println("Error:", err)
- return
- }
- defer resp.Body.Close()
- if resp.StatusCode != 200 {
- fmt.Println("Downloaded:", resp.Status)
- return
- } else {
- body, err := io.ReadAll(resp.Body)
- if err != nil {
- fmt.Println("Error:", err)
- return
- }
- fmt.Println(string(body))
- }
- }
- func main() {
- // 多个url
- urls := []string{
- "https://www.cnblogs.com/apachecn/p/19074830",
- "https://www.cnblogs.com/apachecn/p/19074830",
- }
- wg := sync.WaitGroup{}
- for _, url := range urls {
- wg.Add(1)
- go func(url string) {
- defer wg.Done()
- t := &Task{}
- t.Download(url)
- }(url)
- }
- wg.Wait()
- fmt.Println("all tasks done")
- }
|