
Антон
21.08.2018
19:37:35
Ой, это ведь Го

Slava
21.08.2018
19:37:52
Можно через функциональные аргументы

Alexey
21.08.2018
19:38:42

Daniel
21.08.2018
19:42:38

Google

Kirill
21.08.2018
19:42:52
Ой, это ведь Го
ну да, ведь типам не хватает значения empty. булю, например. true, false, null и empty — охуенно же

Daniel
21.08.2018
19:44:00

Alexey
21.08.2018
19:44:44

Kirill
21.08.2018
19:45:19
запили, может, структурку с опциями
как @toby3d делал в клиенте TG bot api
получается довольно удобно
но — это если я правильно задачу понял

Alexey
21.08.2018
19:48:28
как @toby3d делал в клиенте TG bot api
Можно ссылочку на код? Я находил подобное решение в статьях (если мы об одном и том же). Но в таком случаи клиентский код все равно должен заморичитсья с созданием структуры с параметрами

Kirill
21.08.2018
19:48:58
не, смотри, тип структуры предоставляешь ты сам
а чтобы дать возможность не задавать опции вовсе — можно использовать rest arguments
например:
package a
type SomeOpts struct {}
// ...
func DoSomeReq(options ...SomeOpts) SomeResult {
opts := defaultOpts
if len(options) > 0 {
opts = options[0]
}
// ...
}
в итоге валидным будет и a.DoSomeReq(), и a.DoSomeReq(customOptions)

Google

Daniel
21.08.2018
19:51:56

Kirill
21.08.2018
19:51:59
а лишних аллокаций не будет

Daniel
21.08.2018
19:52:13
тогда возьмите swagger и опишите api на нем
надо будет описать опциональные параметры и дефолты к ним

Kirill
21.08.2018
19:52:32

Daniel
21.08.2018
19:52:49
вот эти дефолты и приедут в ваш хендлер

Kirill
21.08.2018
19:53:06
но может я задачу саму упускаю) Alexey ты пишешь клиент к апишке или реализовываешь сам сервак апишки?

Alexey
21.08.2018
19:53:21
Клиент пишу

Kirill
21.08.2018
19:53:23
Клиент пишу
тогда уж лучше сделать удобный и адекватный клиент, I think
я в gramework специально делаю апишку так, чтобы было легко её юзать — так что там много кода с rest args

Alexey
21.08.2018
19:55:46

Антон
21.08.2018
19:56:06

Kirill
21.08.2018
19:56:12

Антон
21.08.2018
19:58:32

Kirill
21.08.2018
19:58:55
народ, кто звёздочку не поставил грэйму, исправляйте ситуацию https://github.com/gramework/gramework ?

Maxim
21.08.2018
20:03:47

Google

Kirill
21.08.2018
20:04:16

Антон
21.08.2018
20:04:43

Maxim
21.08.2018
20:05:39
Я решил так, что если опциональных аргументов больше трёх-четырёх, то все их пихать в отдельную структуру
Обязательные аргументы всегда напрямую. Либо вообще всё пихать в структуру и чекать поля

Kirill
21.08.2018
20:06:28

Daniel
21.08.2018
20:06:28
это решает проблему именованных аргументов, но не решает проблему дефолтных значений

Kirill
21.08.2018
20:06:46

Maxim
21.08.2018
20:06:54

Антон
21.08.2018
20:11:01
И с дженериками, чтобы был один опциональный тип, а не по одному на каждый, который нагенерировал сам

Slava
21.08.2018
20:12:17

Slava
21.08.2018
20:12:27
тут разобраны разные варианты, в том числе и функциональный

Stanislav
21.08.2018
20:12:44
гоферы мне напоминают персонажей из аниме показывающих невиданную стойкость и силу духа. их продолжают бить, они падают но всеравно продолжают бой

Alexey
21.08.2018
20:12:44

Daniel
21.08.2018
20:13:50

Stanislav
21.08.2018
20:14:45
мне только непонятно почему бизнес спонсирует эту деятельность всю

Daniel
21.08.2018
20:15:14
ну - какую-то деятельность он должен спонсировать

Kirill
21.08.2018
20:16:35
и эта пока выгоднее остальных

Stanislav
21.08.2018
20:16:43
хотя да, я слышал уже о том что можно нанять стадо джунов которые не поймут АДТ и дженерики, но как то очень слабо верится . мне кажется любой програмист за месяц вырастит из яслей и ему самому захочется больше сахара, тем более видит же что в соседнем огроде все ок... короче рвет мне хорошо это шаблон. извените за флуд, уж больно хорошо Антон вбросил...

Google

Kirill
21.08.2018
20:18:12
что он вырастит из яслей? О_о

Daniel
21.08.2018
20:18:51
в каком именно огороде все ок?

Slava
21.08.2018
20:23:57

Kirill
21.08.2018
20:25:01

Phil
21.08.2018
20:26:29
О. У нас давно не былл треда про историю исчезновения дженериков из go?

Kirill
21.08.2018
20:26:53

Phil
21.08.2018
20:26:54
Блин. Надо таки записать и на таймер поставить. Раз в квартал я думаю будет ок

Kirill
21.08.2018
20:27:00
по крайней мере я не видел
ссылку схороним и в людей кидаться можно будет

Admin
ERROR: S client not available

Stanislav
21.08.2018
20:28:19
в каком именно огороде все ок?
о чем вы сейчас? о какой то технической невозможности сделать в языке АДТ и дженерики? шарп, свифт, раст, жава в конце концов. не уступают по скорости гошечке и имеют гораздо больше сахара. у них конечно другие интересы но я верю в свифт на бекенде и рост популярности шарпа, и f# в часности

Phil
21.08.2018
20:28:23
Короче, начинаю вброс для набежавших явистов и иже с ними. В 1992 году они там были.

Антон
21.08.2018
20:28:23

Stanislav
21.08.2018
20:30:21

Slava
21.08.2018
20:30:44
а mypy тут причём? =)

Kirill
21.08.2018
20:31:25

Антон
21.08.2018
20:32:05

Google

Stanislav
21.08.2018
20:32:06

Slava
21.08.2018
20:32:19
толк наверное в том, что она есть, а вы говорите что её нет

Stanislav
21.08.2018
20:33:53
это лишь ты было что сказать. не "отсутствие" а "утиность". не тупой а альтернативно одаренный

Daniel
21.08.2018
20:35:13
скажите лучше, адепты дженериков - зачем они вам нужны?
мне вот ни разу не понадобились
а вам?

Wingman
21.08.2018
20:35:35
чтобы ныть о чём-нибудь другом. А то о дженериках надоело

Stanislav
21.08.2018
20:35:35
если вам не нужны откажитесь от них в списках

Maxim
21.08.2018
20:35:49

Daniel
21.08.2018
20:35:50
в каких списках?

Stanislav
21.08.2018
20:36:34
гошных списках. или вы не знали что они дженерик?

Daniel
21.08.2018
20:36:52
я в курсе, что в go есть generic типы - map, например
я не в курсе, зачем вам нужны генерики кроме тех, что уже есть
и, @enomad , если ответа не будет - я вас побаню на сутки, ок?

Stanislav
21.08.2018
20:37:26
этот вопрос должен ставить в тупик своей элементарностью я понял

Dmitry
21.08.2018
20:38:45
Мне вот в peg парсере пригодились бы генерики. Да и в любом коде работающим с аст

Stanislav
21.08.2018
20:40:04
сократить количество interface{}, возможность задавать функциям какого типа ответ ты от них ожидаешь. самое очевидное даже от питониста. наверное у кого то вроде фаулера может быть полный список

Daniel
21.08.2018
20:41:15
я не пользуюсь interface{}, и я не пишу функций, которые могут вернуть ответ разного типа
а зачем вам это?

Stanislav
21.08.2018
20:42:07
в тс я могу взять библиотечный тип, параметризовать его своим типом и использовать. как нужно вывернуться в го чтобы так сделать я даже не представляю. кроме interfce{} или кодогенерации наверное никак

Dmitry
21.08.2018
20:42:15
А я не пользуюсь каналами в го. Давайте их удалим

Phil
21.08.2018
20:43:25

Kirill
21.08.2018
20:44:05