NeМакс
Добрый вечер. Подскажите в чем проблема при работе с либой xlsx от tealeg. Данные на вход подаю нормальные без дубликатов. Открываю файл и в цикле перебираю sheet. Перебираю массив с данными во вложенном цикле и создаю каждый раз новую строку и ячейки. В итоге он мне id пишет неверный. Попробовал записать в новый файл. Всё повторяется. Пишет все данные верно кроме первой ячейки id. Код примерно такой file = xlsx.NewFile() sheet, err = file.AddSheet("Table") functions.Check(err) for _, dataElem := range data { row = sheet.AddRow() cell = row.AddCell() cell.Value = dataElem.Id . . . // Добавляю другие ячейки }
NeМакс
id дублируются из неизвестных мест
Andrey
пишите dataElem.Id в лог рядом с присваиванием. Это я к тому, что dataElem в цикле переиспользуется, и если там ссылки в структуре, то данные ячейки могут затираться. Как вариант, можно итерировать по индексу for i, _ := range data { ... cell.Value = data[i].Id
NeМакс
При сортировке в LibreOffice сортировал только одну колонку x)
NeМакс
а дубляж из за категорий
NeМакс
NeМакс
for _, x := range data{ for i, y := range data{ if x.Id == y.Id { data = data(data[:i], data[i+1:]...) } } } Как подобное удаление дубликатов можно организовать?
Vladislav
for _, x := range data{ for i, y := range data{ if x.Id == y.Id { data = data(data[:i], data[i+1:]...) } } } Как подобное удаление дубликатов можно организовать?
не допускать их появления, возможно. Сделать map[Id]type, заполнить, собрать массив.
NeМакс
И что?
Спасибо за мысль под другим углом) У меня в слайсы структур собираются данные из парсера (goquery). В одном из циклов EachWithBreak я делаю цикл по уже записанным продуктам и выхожу из цикла, если id совпадают. Надеюсь это не скажется на производительности в 10000 элементов.
NeМакс
Множество циклов меня пугает
Vladislav
_, ok := map[id];
NeМакс
Ого я забыл уже. Спасибо попробую
🏁Александр
ээм
🏁Александр
кстати с юбилеем :)
🏁Александр
ровно 1500 подписичиков
NeМакс
ровно 1500 подписичиков
это круто! Потому что такие комунити редки
Slava
у меня 1499 показывает
NeМакс
Slava
с десктоп клиента
NeМакс
Может интернет слабый
Slava
какие у нас проблемы скучные в го канале, посидел неделю в расте, там у них вообще огонь
Slava
что ни день, то расследование
Slava
то строчки не конвертятся, то дженерики не так раскрываются
NeМакс
🤔
Slava
видно, что люди мозг напрягают каждый день, пока вы тут код пишите
NeМакс
Я бы вот поделился проблемой про http handle errors но лучше пойду писать код :D
🏁Александр
ну поделись
🏁Александр
@kagemakkusu а что за проблема то?
Andrey
Привет, ребзя подскажите, а по философии го, если ты работаешь над несколькими проектами то у тебя должен менятся GOPATH или все твои проекты должны находится внутри одного GOPATH, или ты должен добавлять новые пути в GOPATH?
Andrey
с последним вариантом непонятно тогда с go get
Slava
всё зависит от того, ортодокс ты или последователь нового вендора
Slava
я за то чтобы иметь GOPATH на каждый проект
Slava
отдельный
heavycharged
GOPATH на каждый отдельный проект, это dep?
NeМакс
@kagemakkusu а что за проблема то?
при медленно интернет соединении вырубает и ошибка вроде tls handshake failure
Slava
не, ортодокс стайл это один gopath на всех
NeМакс
Незнаю как вы а я по привычке в go/src/директорияпроекта 😂
Andrey
не, ортодокс стайл это один gopath на всех
ну не, это как-то не серьезно
Slava
скажи это гуглу =)
Andrey
ну хз, если для разных проектов разные версии либ нужны, то как тогда при ордодокс подходе?
NeМакс
Людии что опять делаю не так. Создаю цикл с ссылками для запросов Взываю функцию с запросами data_chan := functions.Grab(link, bar) Создаю канал в файле с функцией который вызываю потом в main c := make(chan map[int]*structures.Data) Создаю в цикле две горутины как здесь https://habrahabr.ru/post/197598/ Заполняю карту data[id] = &structures.Data{...} Отдаю в канал c <- data и возвращаю из функции которая собирает данные return c Получаю данные в цикле после вызова data = <-data_chan IDE предупреждает что Cannot use <-data_chan(type *structures.Data) as type map[int]*Data ...
Andrey
я просто только вкатываюсь в го, решил сделать на нем свой pet проджект. Получается что флоу при создании нового проекта может быть таким: 1) создаем папку нового проекта, в ней bin, pkg, src. переопределяем GOPATH и указываем там созданую родительскую папку 2) в src создаем папку с именем своего проекта, например some_project 3) в src/some_project создаем git репу и начинаем кодить примерно так?
Andrey
спасибо
freezlite
подписывайтесь на мои голые фотки
freezlite
в инстаграмме
NeМакс
без регистрации и смс
Andrey
и если мне для разных проектов нужны разные версии либ
heavycharged
скажем так, GOPATH делаете первый раз при устнановке go, а не каждый раз при создании нового проекта.
Andrey
окей, читну про dep
heavycharged
если нужны разные версии разных либ, используйте dep
🎉
Истина. Поэтому нужно писать свой код так мерзко, чтобы прочесть его смог только ты сам.
Оу, тада мой код смысла ломать мало, его не прочесть никому. 😂
NeМакс
Доброе утро люди) У меня проблема при get запросах. Мне при медленном интернет соединении выкидывает ошибку TLS handshake timeout. Я нашел решение в виде создания контекста с отментой. Саму отмену контекста я не вызываю и передаю в _ . Правильно ли так поступать?
NeМакс
Ващемто, лучше комменты сначала оттуда почитать, там ценные советы.
Точно. Но я уже отказался от этой идеи потому что подождать 5 минут могу)
🎉
Сам подумай, многопоточный грабер одного сайта))) Бред!
🎉
У меня два сайта, на каждый по функции, работают так быстро, что пришлось прописывать паузу, ибо Вконтактик не осилял столько гавна публиковать.
NeМакс
Сам подумай, многопоточный грабер одного сайта))) Бред!
Да там просто запросы чуть ли не трех уровневые
🎉
Причём в два этапа, сначала линки дёргаю, потом контент по этим линкам, а ещё сортировка по ключевым словам, и в финале публикация...
🎉
И да, отдельно парсю ссылки, заголовки, картинки и текст статьи...
NeМакс
ну это норма
NeМакс
на сервере
NeМакс
а когда ты из дома запускаешь это уже другое дело
NeМакс
мне осталось только скомпилить под винду
NeМакс
сейчас буду читать
🎉
Какая нахрен разница откуда запускать? Я то изначально так и запускал из дома, потом када уже отладил по феншую на сервак закинул.
NeМакс
ты же не объяснишь юзверу что если у него вот дико медленный инет то не надо качать фильмы параллельно