Помогите разобраться с горутинами
Пытаюсь постичь понимание работы горутин, каналов и тому подобное. Задался вопросом могу ли я ускорить цикл!? К примеру есть такая конструкция:
xml.Unmarshal(byteValue, &users)
for i := 0; i < len(users.Shop[0].Offers[0].Offer); i++ {
catalog := "./temp/" + users.Shop[0].Offers[0].Offer[i].VendorCode + "_L"
for d := 0; d < len(users.Shop[0].Offers[0].Offer[i].Picture); d++ {
go DownloadPhoto(users.Shop[0].Offers[0].Offer[i].Picture[d], catalog, tick.C, wg)
*В первом цикле я беру код, чтобы во втором цикле скачать фото в каталог.
Следующая конструкция:
xml.Unmarshal(byteValue, &users)
go func(structCh chan struct{}) {
defer close(structCh)
for i := 0; i < len(users.Shop[0].Offers[0].Offer); i++ {
catalog := "./temp/" + users.Shop[0].Offers[0].Offer[i].VendorCode + "_L"
for d := 0; d < len(users.Shop[0].Offers[0].Offer[i].Picture); d++ {
results[users.Shop[0].Offers[0].Offer[i].Picture[d]] = catalog
}
}
}(structCh)
<-structCh
for picture, catalog := range results {
wg.Add(1)
go DownloadPhoto(picture, catalog, tick.C, wg)
}
wg.Wait()
Во второй конструкции я попытался ускорить цикл и запихнуть все в map, после уже с map скачивать фото и сохранять в нужный каталог. Первый и второй вариант по скорости идентичны). Направьте на нужную логику. Полный код в main.go по ссылке https://github.com/sarff/XML_love_price Спасибо.