Параллельные HTTP-запросы без отмены

Код-ревьюMiddle15 минпроверка — Спринт10-t037

Код параллельно запрашивает несколько адресов в отдельных горутинах. Найдите проблемы и добавьте отмену оставшихся запросов, если один из них упал.

Как на собесе: 15 минут, ищи всё — гонки, утечки, ошибки, безопасность, стиль. Ссылайся на строки.

review.gogo
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 — проверить