Vadya
qq all
Anonymous
gg wp
Anonymous
gl hf
Mike
Vadya
command q
Vadya
œœ
Konstantin
что за фокусы - если собираю и запускаю программу в Gogland'е то все отлично работает, а если делаю go build main.go, то программа выкидывает панику во время выполнения, но причем ссылась на какие-то левые строки в исходниках.
panic: runtime error: index out of range
panic(0x623bc0, 0xc420014110)
/usr/lib/go/src/runtime/panic.go:500 +0x1a1
github.com/solidlsnake/instagram-go-scraper/instagram.getFromMediaPage(0xc42047e000, 0xe8e, 0x1e00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/solidlsnake/Dropbox/Go/src/github.com/solidlsnake/instagram-go-scraper/instagram/media.go:92 +0x2d0
github.com/solidlsnake/instagram-go-scraper/instagram.GetMediaByCode(0xc4202dd190, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/solidlsnake/Dropbox/Go/src/github.com/solidlsnake/instagram-go-scraper/instagram/instagram.go:52 +0x15d
Вот, видно, что ошибка в файле media.go на строке 92, но на строке 92 одна строка, обращений к каком-то слайсу\массиву там нет.
Anonymous
значит запускаешь другой код, не тот, чей исходник видишь
Anonymous
инфа 100%
Konstantin
Прелесть) Свою же либу использую, что там вместо нее может быть? можно как-то проверить?
Ruslans
запуск в гогланде посмотри
Konstantin
ща посмотрел в сборке в гогланде, там при сборке используется аргумент -i еще
Konstantin
Может в нем дело?
Konstantin
А gopath точно один и тот же ?
Да, другого и не имеем)
Чуть позже попробую сделать сборку с -i, сейчас просто возможности нет, отпишусь помогло ли
Anonymous
мне кажется никакие флаги не должны это поменять так радикально )
Anonymous
попробуй добавить отладку
Anonymous
в то место, которое выдает ошибку
Anonymous
скорее всего в одном из мест отладка не сработает, значит каким-то образом там читается другой код.
Konstantin
Да, к сожалению не помогло.
Так и говорю - ошибку выдает в бессмысленном для нее месте - в объявлении структуры, а ошибка ругает индекс аут оф рендж.
Konstantin
Но видимо да, придется все утыкать логами и проверять в рантайме прямо.
Alexey
имей всегда дебаг режим с миллиардом логов
Anonymous
Так выяснилось почему другой код отрабатывает?
Anonymous
я же спать не смогу теперь
Anonymous
что за фокусы - если собираю и запускаю программу в Gogland'е то все отлично работает, а если делаю go build main.go, то программа выкидывает панику во время выполнения, но причем ссылась на какие-то левые строки в исходниках.
panic: runtime error: index out of range
panic(0x623bc0, 0xc420014110)
/usr/lib/go/src/runtime/panic.go:500 +0x1a1
github.com/solidlsnake/instagram-go-scraper/instagram.getFromMediaPage(0xc42047e000, 0xe8e, 0x1e00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/solidlsnake/Dropbox/Go/src/github.com/solidlsnake/instagram-go-scraper/instagram/media.go:92 +0x2d0
github.com/solidlsnake/instagram-go-scraper/instagram.GetMediaByCode(0xc4202dd190, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/solidlsnake/Dropbox/Go/src/github.com/solidlsnake/instagram-go-scraper/instagram/instagram.go:52 +0x15d
Вот, видно, что ошибка в файле media.go на строке 92, но на строке 92 одна строка, обращений к каком-то слайсу\массиву там нет.
index уходит за пределы массива\слайса?
Konstantin
Anonymous
Видеть бы что там в этой 92 строке происходит )
Konstantin
в этом и беда, что там ничего не происходит кроме объявления структуры)
Konstantin
и срабатывает эта ошибка только если собрать main.go через консоль
Konstantin
если собрать и запустить в gogland'е то все работает нормально
engelbart
вот вам ваши ide
engelbart
не должно быть магии
Anonymous
Konstantin
в общем какая-то дикая дичь)
Konstantin
буду думать)
Anonymous
скорее всего разные пути/файлы/GOPATH в двух окружениях
Konstantin
Бляха муха)
Konstantin
Действительно кажись %)
Илья
https://github.com/Vorkytaka/instagram-go-scraper/commit/8e56a544937f1e1f9bc6a915d2d340906d711bf1#diff-4490df726487551631a7cfc68c5a6610R92
Илья
я думаю, у вас разные версии в разных GOPATH
Konstantin
Да, кажется так и есть) Я невнимательный долбаеб и опечатался в GOPATH который в терминале)
Konstantin
Да, так и есть) Всем спасибо))
Konstantin
А в чем разница, если делать так:
type SafeCounter struct {
v map[string]int
mux sync.Mutex
}
или так
type SafeCounter struct {
sync.Mutex
v map[string]int
}
Илья
во втором случае у тебя методы Lock и Unlock становятся публичными для объекта
Konstantin
Какое-то недонаследование, емае)
Илья
это встраивание
Илья
называется
Konstantin
В первом случае да. А во втором как-то не очевидно совершенно
engelbart
Второе не встречал, как оно вообще называется
Илья
http://www.hydrogen18.com/blog/golang-embedding.html
Dmitry
Konstantin
Dmitry
Нет в го наследования(в целом, оно и не нужно, без него сильно проще живётся)
Konstantin
Именно, что нет, но в данном случае кривым способом оно почти эмулируется
Konstantin
Смешно)
Dmitry
Я когда на го только смотреть начинал тоже смеялся. Потом распробовал и больше не хочу наследования.
Могу ещё добавить смешилок: методы встроенного объекта не могут влиять лишь на свой объект, т.е. если Mutex встроен в SafeCounter то он никаким образом не может поменять/прочитать данные из SafeCounter. И это прекрасно
Konstantin
Родитель в наследовании тоже никак не может поменять у наследника)
Konstantin
Но да, все го-любители вечно орут, что то не нужно, то не нужно, а в го все идеально, это разговор не о чем)
Dmitry
Это я то го-любитель?)) Я вот ору что дженериков нет, система типов говно, стандартная либа местами написана плохо... ну и ещё по мелочам
Konstantin
это не мешает теме "нужно ли наследование" быть ни о чем)
Dmitry
Но наследование и правда не нужно. Встраивание, агрегация, оборачивание - вот гораздо более очевидные и прозрачные подходы
Konstantin
это как веганы которые везде обязаны рассказать, что без мяса отлично живется)
Dmitry
С веганами тут мало общего. С какого языка на го перекатываетесь?)
Konstantin
Да я не перекатываюсь) Просто потыкал его в паре домашних проектов, а так мне и на котлине и питоне хорошо)
Konstantin
Го теперь для меня просто легкий язык на котором скриптик будет очень легким, что иногда нужно)
Dmitry
Ну значит с колокольни этих языков на го смотрите. Это пройдёт, со временем :)
И только ощущение что дженериков нехватает останется :D
Konstantin
Мне и с наследованием хорошо, пасибки)
Anatoly
А мне было плохо с наследованием в С#
Anatoly
Аьстрактный класс, интерфейс, свой отнаследованый класс, фабрика, диай контейнер, и вот вроде бы пора писать код, а пальцы уже устали и кода, который еще ничего не делает размером уже с го программу.
Anatoly
А в го меня прям радуют эти имплисит интерфейсы, такая ня ^_^
Anatoly
И они отчасти решают проблему дженериков
Vsevolod
Anatoly
А еще больше в наследовании меня прям бесит, что оно поощряет раздувание базового класса. Есть у тебя две похожие сущности, чуть-чуть различаются и кисс вроде говорит: - сделай два класса, они же разные, а драй - ты что там упоролся столько копипастить, давай чуть увеличим базовый класс отнаследуемся и все рады.