Код параллельно запрашивает несколько адресов в отдельных горутинах. Найдите проблемы и добавьте отмену оставшихся запросов, если один из них упал.
Как на собесе: 15 минут, ищи всё — гонки, утечки, ошибки, безопасность, стиль. Ссылайся на строки.
1func main() {2 links := []string{3 "https://a.example",4 "https://b.example",5 "https://c.example",6 "https://d.example",7 }8 9 for _, link := range links {10 go func(link string) {11 e := fetch(context.Background(), link)12 if e != nil {13 fmt.Printf("err %s\n", e)14 return15 }16 }(link)17 }18 fmt.Println("launched")19 time.Sleep(400 * time.Millisecond)20 fmt.Println("done")21}22 23func fetch(ctx context.Context, link string) error {24 req, e := http.NewRequestWithContext(ctx, http.MethodGet, link, nil)25 if e != nil {26 return e27 }28 29 _, e = http.DefaultClient.Do(req)30 return e31}
⌘ Enter — проверить