Vladimir
https://github.com/SolidlSnake/easyvk-go/blob/master/easyvk/vk.go#L179-L183
Vladimir
Это ты так проверяешь наличие поля "error" в JSON ответе?
Vladimir
https://godoc.org/encoding/json#RawMessage
Vladimir
Vladimir
Только в Response держать не указатель на json.RawMessage, а само значение типа json.RawMessage.
Vladimir
Ну и код ответа проверять нужно.
Konstantin
Читаю пример по ссылке и слабо понимаю пока, как это работает %)
Илья
json сохранится as is, и ты можешь дальше анмаршалить, в зависимости от наличия Error
Vladimir
Частичная десериализация.
Dmitriy
О, круто, беру на заметку. Не знал.
Илья
Konstantin
именно так
но как это срабоатет, если json вообще может разный быть?
то { "error": {...}}, то {"response":{}}
Илья
в примере, который показал Владимир, он Error объявил ссылкой на структуру, т.е. если ее не будет в ответе, там будет nil, а response останется as is, и его далее можно будет разбирать
Илья
если response отсутствует, там будет пустой слайс
Vladimir
Konstantin
Ух, ладно, буду вкуривать) Спасибо
Мерль
Caddy 0.10 Released (Score: 101+)
Link: http://j.mp/2oRDInP
Konstantin
А объясните еще раз, почему error и rawmessage именно ссылкой обозначены?
Vladimir
Vladimir
Да, но так делать смысла нет.
Konstantin
А то я с ссылками и указателями слаб, знаю, что надо использовать когда передаем в функцию что-то, что должно быть изменено глобально и все
Konstantin
Поэтому подобные места вопросы вызывают
Vladimir
Указатель нужен, чтобы получить nil в случае отсутствия поля error.
Mike
RawMessage незачем.
вообще-то есть зачем. ссылка 8 байт весит, а все сообщение может много, и каждый раз копирвать много в локальные переменные функции такая себе идея
Vladimir
Vladimir
Vladimir
С указателем: {0x1050a180 <nil>}
Без указателя: {0x1050a180 {0 []}}
Konstantin
Тобишь в данном случае указатель для простоты проверки, можно и без него проверяя, что ошибка пустой вернулась
Dmitriy / დიმიტრი
Кто пишет на Go на продакшене или имеет какие-то серьезные проекты.
Как у вас организована сборка проекта с нуля?
Пользуетесь ли вы vendor директорией?
Используете ли вы в своем проекте всегда последнюю версию библиотеки или зафиксированы на определенной версии?
Обновляете ли вы со временем эту версию?
Slava
вендорим, зафиксирована версия, не обновляем версию
Dmitriy / დიმიტრი
Есть ли способы просто как в nodejs/python подтянуть по списку все нужные библиотеки с нужными версиями а потом собрать проект?
Slava
есть, бери любой вендор инструмент
Slava
но подтягивать при сборке - гиблое дело, лучше вендорить
Dmitriy / დიმიტრი
В vendor git'овские сабмодули или все обычно код просто копируют не разделяя на отдельные репозитории?
Slava
вендор библиотеки копируют код в твой репозиторий
Slava
и ты хранишь его у себя
Alexey
но подтягивать при сборке - гиблое дело, лучше вендорить
А для вендоринга чем лучше пользоваться? Glide?
https://github.com/Masterminds/glide
У меня просто возникали с ним проблемы при использовании редактора Atom с плагином для golang - go-plus, автоматом там тул, что запускал тесты не понимал, что либы лежат в vendor папке.
В итоге так и не разобравшись пришлось пока то что хотел завендорить положить по дефолтному пути ~/go/src
Slava
ну это плагин у тебя кривой, а не глайд
Slava
пользуйся нормальными IDE, типа vim
Quet
vim.. IDE... смешно конечно)
Alexey
Вим слишком радикально пока :)
Dmitriy / დიმიტრი
Решил пока с vendor'ами не заморачиваться. Попробую сейчас всё организовать в качестве сабмодулей, что бы можно было просто рекурсивно клонировать весь проект и собирать. Мне кажется просто хранить у себя отдельную копию библиотеки вместо git-ссылки на специфичную версию/коммит не очень хорошо.
Правда я пока не знаю умеет ли git делать сабмодуль с ссылкой на определенную версию/коммит.
Slava
хранить у себя версию - это очень хорошо
Slava
потому что люди любят удалять/переименовывать свои репозитории
Slava
и интернет имеет свойство ломаться
Dmitriy / დიმიტრი
¯\_(ツ)_/¯
Dmitriy / დიმიტრი
Поменяют аддрес библиотеки - поменяю аддреса в проекте. Конечно хранить именно копию надежнее, но мне как-то это не сильно нравится. Всеравно что я у себя бы node_modules в проектах на node.js сохранял.
Dmitriy / დიმიტრი
Не уверен, что npm-подобное хранилище было бы лучшем решением, но мне кажется оно было бы более надежным. Всё-таки ник на github'е действительно может поменять какой-нибудь тип от которого зависит куча проектов.
Но я новичок, в Go всего месяц и скорее всего тот ещё невежда
Slava
у нас тут подкаст начался http://golangshow.com/online/
engelbart
Да, это древняя боль. Придумали костыли - вендеринг, юзайте его.
Не особо помогает. и есть шанс что вы однажды влетите в чужой проект без вендоринга. Что делать, жизнь боль.
Slava
все нормальные люди хранят код у себя
Slava
всегда есть вероятность атомной войны
Aleksandr
это видимо свойство низкоуровневых языков - все таскать с собой. в высокоуровневых все подкачивают через менеджеры.
Dmitriy / დიმიტრი
Aleksandr
Anonymous
И проект не перестаёт собираться, тк копии исходников лежат на компутерах
Anonymous
Ребята, не знаю аглийского языка, поэтому имею трудности в поиске нужной информации. А вопрос такой: хочу написать приложение для Android на Go. Что максимально можно сделать на Go для Adroid, я имею ввиду можно ли написать интерфейс или все таки без Java не обойтись? Буду рад ссылкам на полезные источники.
Anonymous
Anonymous
Ну вопрос в другом. Это я и сам понимаю)
who
who
на самом деле интересно есть ли смысл ?
Anonymous
Anonymous
Anonymous
Ivan
кароче, парни, вам тут говорят как делают сильные мира сего, а вы там сами у себя решайте как делать)
Aleksandr
увы, сильные мира сего - это 1% от количества, и 99% от ресурса на инфраструктуру, со всеми вытекающими
Dmitriy / დიმიტრი
Т.е. если в одной из библиотек от которой зависит программа обнаруживается фатальный баг и её надо обновить, то просто заново все файлы копируешь теряя все преимущества git'a?
Мне кажется такой способ породит больше багов чем падение github'a.
engelbart
какие такие преимущества
engelbart
каие преимущества git в аццких его субмодлулях век бы их не видать
Anonymous