
Vladimir
21.04.2017
14:41:09
Это ты так проверяешь наличие поля "error" в JSON ответе?

Konstantine
21.04.2017
14:42:07

Vladimir
21.04.2017
14:42:31
https://godoc.org/encoding/json#RawMessage

Google

Vladimir
21.04.2017
14:46:45
Только в Response держать не указатель на json.RawMessage, а само значение типа json.RawMessage.
Ну и код ответа проверять нужно.

Konstantine
21.04.2017
14:53:50
Читаю пример по ссылке и слабо понимаю пока, как это работает %)

Илья
21.04.2017
14:56:06
json сохранится as is, и ты можешь дальше анмаршалить, в зависимости от наличия Error

Vladimir
21.04.2017
14:56:07
Частичная десериализация.

Dmitriy
21.04.2017
14:56:25
О, круто, беру на заметку. Не знал.

Konstantine
21.04.2017
14:57:32

Илья
21.04.2017
14:57:56

Konstantine
21.04.2017
14:58:41
именно так
но как это срабоатет, если json вообще может разный быть?
то { "error": {...}}, то {"response":{}}

Илья
21.04.2017
15:00:09
в примере, который показал Владимир, он Error объявил ссылкой на структуру, т.е. если ее не будет в ответе, там будет nil, а response останется as is, и его далее можно будет разбирать
если response отсутствует, там будет пустой слайс

Vladimir
21.04.2017
15:01:18
Указатель.

Konstantine
21.04.2017
15:02:34
Ух, ладно, буду вкуривать) Спасибо

Google

Мерлин
21.04.2017
15:45:33
Caddy 0.10 Released (Score: 101+)
Link: http://j.mp/2oRDInP

Konstantine
21.04.2017
16:27:17
А объясните еще раз, почему error и rawmessage именно ссылкой обозначены?

Vladimir
21.04.2017
16:27:44

Konstantine
21.04.2017
16:28:59

Vladimir
21.04.2017
16:29:22
Да, но так делать смысла нет.

Konstantine
21.04.2017
16:29:43
А то я с ссылками и указателями слаб, знаю, что надо использовать когда передаем в функцию что-то, что должно быть изменено глобально и все
Поэтому подобные места вопросы вызывают

Vladimir
21.04.2017
16:32:57
Указатель нужен, чтобы получить nil в случае отсутствия поля error.

Mike
21.04.2017
16:32:59
RawMessage незачем.
вообще-то есть зачем. ссылка 8 байт весит, а все сообщение может много, и каждый раз копирвать много в локальные переменные функции такая себе идея

Vladimir
21.04.2017
16:33:49
С указателем: {0x1050a180 <nil>}
Без указателя: {0x1050a180 {0 []}}

Konstantine
21.04.2017
16:49:59
Тобишь в данном случае указатель для простоты проверки, можно и без него проверяя, что ошибка пустой вернулась

Monday Begins on Saturday
21.04.2017
17:06:17
Кто пишет на Go на продакшене или имеет какие-то серьезные проекты.
Как у вас организована сборка проекта с нуля?
Пользуетесь ли вы vendor директорией?
Используете ли вы в своем проекте всегда последнюю версию библиотеки или зафиксированы на определенной версии?
Обновляете ли вы со временем эту версию?

Slava
21.04.2017
17:07:49
вендорим, зафиксирована версия, не обновляем версию

Monday Begins on Saturday
21.04.2017
17:07:57
Есть ли способы просто как в nodejs/python подтянуть по списку все нужные библиотеки с нужными версиями а потом собрать проект?

Slava
21.04.2017
17:08:27
есть, бери любой вендор инструмент
но подтягивать при сборке - гиблое дело, лучше вендорить

Monday Begins on Saturday
21.04.2017
17:10:58
В vendor git'овские сабмодули или все обычно код просто копируют не разделяя на отдельные репозитории?

Slava
21.04.2017
17:19:38
вендор библиотеки копируют код в твой репозиторий

Google

Slava
21.04.2017
17:19:45
и ты хранишь его у себя

Alexey
21.04.2017
17:19:48
но подтягивать при сборке - гиблое дело, лучше вендорить
А для вендоринга чем лучше пользоваться? Glide?
https://github.com/Masterminds/glide
У меня просто возникали с ним проблемы при использовании редактора Atom с плагином для golang - go-plus, автоматом там тул, что запускал тесты не понимал, что либы лежат в vendor папке.
В итоге так и не разобравшись пришлось пока то что хотел завендорить положить по дефолтному пути ~/go/src

Slava
21.04.2017
17:20:10
ну это плагин у тебя кривой, а не глайд
пользуйся нормальными IDE, типа vim

Quet
21.04.2017
17:20:51
vim.. IDE... смешно конечно)

Alexey
21.04.2017
17:21:07
Вим слишком радикально пока :)

Monday Begins on Saturday
21.04.2017
17:43:58
Решил пока с vendor'ами не заморачиваться. Попробую сейчас всё организовать в качестве сабмодулей, что бы можно было просто рекурсивно клонировать весь проект и собирать. Мне кажется просто хранить у себя отдельную копию библиотеки вместо git-ссылки на специфичную версию/коммит не очень хорошо.
Правда я пока не знаю умеет ли git делать сабмодуль с ссылкой на определенную версию/коммит.

Slava
21.04.2017
17:47:13
хранить у себя версию - это очень хорошо
потому что люди любят удалять/переименовывать свои репозитории
и интернет имеет свойство ломаться

Monday Begins on Saturday
21.04.2017
17:50:05
¯\_(ツ)_/¯
Поменяют аддрес библиотеки - поменяю аддреса в проекте. Конечно хранить именно копию надежнее, но мне как-то это не сильно нравится. Всеравно что я у себя бы node_modules в проектах на node.js сохранял.
Не уверен, что npm-подобное хранилище было бы лучшем решением, но мне кажется оно было бы более надежным. Всё-таки ник на github'е действительно может поменять какой-нибудь тип от которого зависит куча проектов.
Но я новичок, в Go всего месяц и скорее всего тот ещё невежда

Slava
21.04.2017
17:58:50
у нас тут подкаст начался http://golangshow.com/online/

Ivan
21.04.2017
17:59:09
Да, это древняя боль. Придумали костыли - вендеринг, юзайте его.
Не особо помогает. и есть шанс что вы однажды влетите в чужой проект без вендоринга. Что делать, жизнь боль.

Slava
21.04.2017
18:01:21
все нормальные люди хранят код у себя
всегда есть вероятность атомной войны

Aleksandr
21.04.2017
18:16:48
это видимо свойство низкоуровневых языков - все таскать с собой. в высокоуровневых все подкачивают через менеджеры.

Monday Begins on Saturday
21.04.2017
18:19:32

Google

Ivan
21.04.2017
18:23:39

Aleksandr
21.04.2017
18:31:10

Andrew
21.04.2017
18:32:46
И проект не перестаёт собираться, тк копии исходников лежат на компутерах

Victor
21.04.2017
18:34:07
Ребята, не знаю аглийского языка, поэтому имею трудности в поиске нужной информации. А вопрос такой: хочу написать приложение для Android на Go. Что максимально можно сделать на Go для Adroid, я имею ввиду можно ли написать интерфейс или все таки без Java не обойтись? Буду рад ссылкам на полезные источники.

Andrew
21.04.2017
18:35:22

Victor
21.04.2017
18:35:46
Ну вопрос в другом. Это я и сам понимаю)

N
21.04.2017
18:36:46
на самом деле интересно есть ли смысл ?

Ivan
21.04.2017
18:37:28

Andrew
21.04.2017
18:37:54

Aleksandr
21.04.2017
18:39:11

Ivan
21.04.2017
18:39:16

Andrew
21.04.2017
18:40:27

Ivan
21.04.2017
18:40:30

Andrew
21.04.2017
18:41:26

Ivan
21.04.2017
18:42:16
кароче, парни, вам тут говорят как делают сильные мира сего, а вы там сами у себя решайте как делать)

Konstantine
21.04.2017
18:44:19

Aleksandr
21.04.2017
18:44:36
увы, сильные мира сего - это 1% от количества, и 99% от ресурса на инфраструктуру, со всеми вытекающими

Monday Begins on Saturday
21.04.2017
18:47:58
Т.е. если в одной из библиотек от которой зависит программа обнаруживается фатальный баг и её надо обновить, то просто заново все файлы копируешь теряя все преимущества git'a?
Мне кажется такой способ породит больше багов чем падение github'a.

Ivan
21.04.2017
18:48:32
какие такие преимущества

Google

Ivan
21.04.2017
18:48:52
каие преимущества git в аццких его субмодлулях век бы их не видать

Andrew
21.04.2017
18:49:48

Vladimir
21.04.2017
18:50:15
Дать возможность передавать *http.Client. Ну и если передают nil, то тогда уже откатываться к http.DefaultClient. Либо инициализировать свой клиент, конфигурируя там таймауты.
https://github.com/SolidlSnake/easyvk-go/blob/master/easyvk/vk.go#L168
Здесь лучше использовать POST.

Monday Begins on Saturday
21.04.2017
18:53:47
go get -u ...?
"Get never checks out or updates code stored in vendor directories. "

Vladimir
21.04.2017
18:55:43
Ну и АВТОРИЗАЦИЯ это довольно сомнительная фича. Лучше сразу принимать токен. Ну либо использовать direct auth с данными какого-нибудь официального приложения, например: https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=username&password=password

Konstantine
21.04.2017
18:56:47

Vladimir
21.04.2017
18:58:41

Konstantine
21.04.2017
18:59:36

分解物質
21.04.2017
19:10:24
Пайк няшка

Daniel
21.04.2017
19:27:07

Мерлин
21.04.2017
19:31:28

Semyon
21.04.2017
19:44:06
Или, на худой конец, с локального артифэктори

Мерлин
21.04.2017
21:06:01
cznic/sqlite: Package sqlite is an in-process implementation of a self-contained, serverless, zero-configuration, transactional SQL database engine. (Work In Progress)
https://github.com/cznic/sqlite

Aleksandr
22.04.2017
00:44:13
https://github.com/st0012/Rooby