Помогите разобраться с горутинами

Пытаюсь постичь понимание работы горутин, каналов и тому подобное. Задался вопросом могу ли я ускорить цикл!? К примеру есть такая конструкция:

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 Спасибо.


Ответы (0 шт):