@gogolang

Страница 1323 из 1630
Alexander
29.08.2018
15:59:19
А зачем тогда принялись v.2 обсуждать?

Roman
29.08.2018
15:59:50
А зачем тогда принялись v.2 обсуждать?
потому-что пипл хочет "изменений", это маркетинг... 2.0 звучит лучше чем 1.15

Никита
29.08.2018
16:00:09
Google
Roman
29.08.2018
16:00:17
но пипл не догоняет что ломать экосистему в долгосрочной перспективе это опасно

Alexander
29.08.2018
16:00:20
Alexander
29.08.2018
16:00:28
потому-что пипл хочет "изменений", это маркетинг... 2.0 звучит лучше чем 1.15
а не похер, как оно звучит? Лишь бы не было войны на самом деле

Никита
29.08.2018
16:00:40
ВСЁ
Ну конкретно. В чем магия имплементации слайсов и мапы?

Не ну то что мы подсовываем тип как параметр при создании слайса, это да, интересно)

Но в целом, ради чего там ломать совместимость?

Roman
29.08.2018
16:01:25
я вот например являюсь автором опен сорсной библиотеки.. и что мне потом поддерживать несовместимые меж собой Go 1 и Go 2? ну нахер, я перейду тогда на Go 2 и тем самым пошлю своих собратьев, которые по определённым причинам не могут ещё перейти на Go 2 ещё раз: не повторяйте ошибки питона, помните что у нас только-что зародилась прекрасная экосистема, которая может быть уничтожена потому-что некоторым захотелось чуток нового сахара

Jentry
29.08.2018
16:01:41
опять всё снова? ну тогда посмотри на Python 2/3, они тоже этого хотели и получили полный пздц
собственно в чем проблема? переход был достаточно гладкий, появились six, feature модули, многие продукты успели сделать совместимость и подготовиться к переходу, python2.7 долгое время продолжает поддерживаться и происходит бэкпорт фичей

Daniel
29.08.2018
16:02:51
коллеги, большая часть проблем питона 2/3 была связана с тем, что на стороне пользователя тоже нужны либы

у нас это не так, у нас пользователь может продолжать пользоваться

Roman
29.08.2018
16:07:36
у нас это не так, у нас пользователь может продолжать пользоваться
если не поломают обратную совместимость. если они её не сломают то нет смысла переименовывать в GO 2.x потому-что это нарушает semantic-versioning где major version это breaking compatibility

у меня нет проблем с тем чтоб го развивался хоть до 1.50

Alexander
29.08.2018
16:08:37
или до 1.777 - козырно выглядит :)

Google
Roman
29.08.2018
16:09:18
однако они могут из маркетинговых соображений перейти на 2.x потому-что люди твари нерациональные и хотят видеть major version чтоб им не казалось что язык стоит на месте..

human society is as always pretty f*cked-up

помоему Russ говорил что Go 2.x скорее всего будет Go 1.15

предлагаю им ввести названия Build'ов Go 1.11 Goofy Gopher Go 1.12 Guilty Gopher Go 1.13 Green Gopher

Roman
29.08.2018
16:15:34
Ты сам выдумал смысл мажор версии, в оригинале в faq они пишут иначе https://golang.org/doc/faq#language_changes
https://semver.org/ 1. MAJOR version when you make incompatible API changes, а разработчики Go придерживаются semver

Jentry
29.08.2018
16:17:05
Pawel
29.08.2018
16:17:56
у меня есть структура с n полями, сериализуемая в json. Мне нужно ее маршалить в json вида {"@type": "myType", ...other fields...} то есть инжектить на стадии маршалинга поле @type с заданным значением. Учитывая что в полях могут быть подобные же структуры, куда тоже надо инжектить тип, надо реализовать кастомным маршалером. Но самый просто вариант - смаршалить структуру, а потом в полученные байты запихнуть еще одно поле - не работает, т.к. кастомный маршалер логично вызывается циклически. Есть какое-то простое решение, которое мне на ум не пришло? (под простым решением я не имею в виду вручную маршалить всю структуру)
у меня сложилось впечатление, что тебе нужно просто парсить json в функциональном стиле, согласно концепции JsonValue - типа-суммы, в который укладывается любое json значение. type Json = JString of string | JNumber of float | JBool of bool | JNull | JList of Json list | JObject of Map<string, Json> Я не знаю какая либа в голанге это делает, но думаю что-то есть. Вот примерно такая (elm) https://package.elm-lang.org/packages/1602/json-value/latest/Json-Value

Vladislav
29.08.2018
16:19:59
https://semver.org/ 1. MAJOR version when you make incompatible API changes, а разработчики Go придерживаются semver
Тут ещё нужно ссылку на то что разработчики придерживаются семвера. Непонятно почему ты так решил.

Roman
29.08.2018
16:21:54
а почему-то в своем faq противоречат себе?
впервые в жизни видешь как кто-то себе противоречит?))

Aleksandr
29.08.2018
16:22:49
Jentry
29.08.2018
16:22:58
впервые в жизни видешь как кто-то себе противоречит?))
Я еще пока не увидел пруфов, что go чему-то там следует, а не вольны воспринимать версии, как им будет удобно

Roman
29.08.2018
16:24:27
Тут ещё нужно ссылку на то что разработчики придерживаются семвера. Непонятно почему ты так решил.
ты мне лучше скажи какая серьёзная публичная контора разрабатывающая софт не только для себя да ещё и в опен сорсе - НЕ придерживается semver? начиная с того что ново-внедрённые "модули" основаны на semver и сами версии Go его практически придеживаются с Go 1.0.0 - довольно просто понять что они придеживаются semver.

Pawel
29.08.2018
16:28:14
я про маршалинг, не про анмаршалинг
а, ну вот имхо как-то не тривиально сконвертить гошную структуру данных в JsonValue проще, чем кастомный MarshalJSON() ([]byte, error)

Aleksandr
29.08.2018
16:29:33
Roman
29.08.2018
16:55:24
Artem
29.08.2018
17:03:22
всмсл?
Это он о том, что пока они сами не сказали, что придерживаются семвер, они могут творить что душе угодно

Google
Alexander
29.08.2018
17:03:35
предлагаю им ввести названия Build'ов Go 1.11 Goofy Gopher Go 1.12 Guilty Gopher Go 1.13 Green Gopher
1.14 Gipsy Gopher 1.15 Gaily Gopher 1.16 Gamely Gopher 1.17 Glibly Gopher 1.18 Grubby Gopher 1.19 Grainy Gopher 1.20 Goodby Gopher

Artem
29.08.2018
17:06:31
я буду удивлён если они не по semver методике работают
Они любят изобретать всякие штуки, похожие на существующие, но "типо" новые

Roman
29.08.2018
17:06:34
1.14 Gipsy Gopher 1.15 Gaily Gopher 1.16 Gamely Gopher 1.17 Glibly Gopher 1.18 Grubby Gopher 1.19 Grainy Gopher 1.20 Goodby Gopher
1.21 Gopher-600 1.22 Gopher-700 1.23 Gopher-800 1.24 Gopher-900 1.25 Gopher-X 1.26 Liquid Gopher-1000

Alexander
29.08.2018
17:07:57
1.21 Gopher-600 1.22 Gopher-700 1.23 Gopher-800 1.24 Gopher-900 1.25 Gopher-X 1.26 Liquid Gopher-1000
Ну, цифры не надо. Надо слова: egrep -i '^g.+y$' /usr/share/dict/words выбирай не хочу :)

Harry
29.08.2018
17:08:29
пасаны, через r.URL.Query() же нельзя получить POST данные?

Roman
29.08.2018
17:08:46
Roman
29.08.2018
17:11:28
А вот скажите, могу ли я сделать свою реализацию мапы так, что сторонний код мог ее использовать?

Harry
29.08.2018
17:11:34
нет, конечно
крутяк. просто в книге по которой изучаю голанг, чел делает POST метод создания документа и берет данные через URL.Query()

Aleksandr
29.08.2018
17:15:14
Формировать можно, и.к. они одного формата

Aleksandr
29.08.2018
17:16:25
Из кода следует, что он берет данные из query string

Alexander
29.08.2018
17:16:55
Так там ни до какого POST еще ничего не дошло.

Google
Harry
29.08.2018
17:18:31
дальше он указывает в роутере Methods("POST") для этой функции. это ж бессмыслица

Alexander
29.08.2018
17:19:53
дальше он указывает в роутере Methods("POST") для этой функции. это ж бессмыслица
Нет, все нормально. Поработал с данными и отправил на сервер HTTP методом POST.

А! Это он на сервере разрешил метод POST. Блин, я же не телепат :)

Harry
29.08.2018
17:21:59
ок. перечитаю. походу чет недопонял

Alexander
29.08.2018
17:22:08
угу, перечитай там внимательно

Z10n1k
29.08.2018
17:28:28
Народ, а кто-нибудь работал с pgx(https://github.com/jackc/pgx)? Пишу относительно недавно, но словил непонятки. Кейс следующий: Предположим я делаю запрос в котором вернётся точно 1 результат. COUNT/SUMM как вариант. Результат может быть 2х типов float64/int32. Пытался использовать QueryRow(q).Sccan(&value). И вот вопрос: Если я точно не знаю возвращаемый запросом тип переменной, но при этом меня устроил бы string, как это сделать? Судя по документации на интерфейс Scan, он должен на основании переменной что я передал, кастануть их из формата используемой БД в тот, что я передал. На деле же pgx требует конкретный тип который возвращает БД. То есть я не могу например сделать так: var v string errQuery := conn.Pool.QueryRow("SELECT COUNT(*) FROM mytable").Scan(&v) Ругается на: can't scan into dest[0]: cannot assign 7 into *string Может я как-то нетак понимаю?) Как вообще решаются подобные случаи?

Alexander
29.08.2018
17:33:59
Народ, а кто-нибудь работал с pgx(https://github.com/jackc/pgx)? Пишу относительно недавно, но словил непонятки. Кейс следующий: Предположим я делаю запрос в котором вернётся точно 1 результат. COUNT/SUMM как вариант. Результат может быть 2х типов float64/int32. Пытался использовать QueryRow(q).Sccan(&value). И вот вопрос: Если я точно не знаю возвращаемый запросом тип переменной, но при этом меня устроил бы string, как это сделать? Судя по документации на интерфейс Scan, он должен на основании переменной что я передал, кастануть их из формата используемой БД в тот, что я передал. На деле же pgx требует конкретный тип который возвращает БД. То есть я не могу например сделать так: var v string errQuery := conn.Pool.QueryRow("SELECT COUNT(*) FROM mytable").Scan(&v) Ругается на: can't scan into dest[0]: cannot assign 7 into *string Может я как-то нетак понимаю?) Как вообще решаются подобные случаи?
Он возвращает то, что ему кажется удобным, исходя их типа поля или возвращаемого значения. Придется делать strconv.Itoa, если именно строка нужна в итоге

Admin
ERROR: S client not available

Z10n1k
29.08.2018
17:35:45
@aadz69 Так в том-то и дело, что я не могу даже получить результат. Я хочу что бы не зависимо от того что будет возвращаться в запросе был стринг. Но что бы получить стринг, нужно впринципе получить значение. pgx мне этого не даёт делать, он требует что бы передаваемый в dst указатель был конкретного типа на сколько я понял.

Alexander
29.08.2018
17:37:43
да. поэтому надо переменную для результата объявить, как int и потом ее уже конвертировать в строку

Z10n1k
29.08.2018
17:39:32
Alexander Так может быть и не int в ответе, а например float. И тогда я получаю например: can't scan into dest[0]: cannot assign 485759.95754787955 into *int

ainu
29.08.2018
17:45:46
https://twitter.com/golang/status/1034471897948454912?s=19

Кажется, генерики

(за это слово тут банят или в соседнем чате?)

Alexander
29.08.2018
17:48:10
тут :)

Michael
29.08.2018
17:49:50
Народ, а кто-нибудь работал с pgx(https://github.com/jackc/pgx)? Пишу относительно недавно, но словил непонятки. Кейс следующий: Предположим я делаю запрос в котором вернётся точно 1 результат. COUNT/SUMM как вариант. Результат может быть 2х типов float64/int32. Пытался использовать QueryRow(q).Sccan(&value). И вот вопрос: Если я точно не знаю возвращаемый запросом тип переменной, но при этом меня устроил бы string, как это сделать? Судя по документации на интерфейс Scan, он должен на основании переменной что я передал, кастануть их из формата используемой БД в тот, что я передал. На деле же pgx требует конкретный тип который возвращает БД. То есть я не могу например сделать так: var v string errQuery := conn.Pool.QueryRow("SELECT COUNT(*) FROM mytable").Scan(&v) Ругается на: can't scan into dest[0]: cannot assign 7 into *string Может я как-то нетак понимаю?) Как вообще решаются подобные случаи?
Постгрес? Можно явно указать тип столбца при выборке и потом делать scan в нужный тип

Z10n1k
29.08.2018
17:51:11
Michael да Постгрес. Это понятно что можно на уровне запроса закастить. Но хочется без таких "костылей".

Michael
29.08.2018
17:53:09
Или касти к строке при выборке и читай потом свою строку

Google
Z10n1k
29.08.2018
18:01:24
Michael Это решит проблему конечно, но меня не покидает чувство, что это костыль ) ИМХО Было бы правильно уметь обрабатывать типы возвращаемых значений без участия запроса. Ведь запросы может и не разработчик писать например. Конечное решение пока крайне ужасное, через Query. Там не важно какой тип. Просто в слайсе все значения конкретных типов: rows, errQuery := conn.Pool.Query(*qObject.Query) ... rows.Next() valueRaw, errValue := rows.Values() ... value := fmt.Sprintf("%v", valueRaw[0])

Alexey
29.08.2018
18:05:21
там где не хейтят за слово которое нельзя произносить? )

Daniel
29.08.2018
18:05:35
в обоих

и банят не за слово, а за попытку навязать его обмусоливание

Alexander
29.08.2018
18:06:24
надо для этого термина просто какое-то кодовое слово придумать, чтобы его не называть, а обсуждать проблему при админах... Типа, дети наркоту литературой, вроде, называют... :)

Daniel
29.08.2018
18:06:48
да обсуждайте сколько хотите

Alexander
29.08.2018
18:07:23
А я не знаю, чего обсуждать. Я как-то и без этого слова в языке не не страдаю, вроде бы

Просто те, кто тоже не страдает, им и пофиг. Но есть страдальцы, что же поделаешь?

Alexey
29.08.2018
18:08:37
я страдаю. но мне очень понравился дизайн. фактически могут завести тайпклассы.

Alexander
29.08.2018
18:09:18
А почему тогда сразу не юзать C++? Там все есть, что надо и не надо

Daniel
29.08.2018
18:09:20
Просто те, кто тоже не страдает, им и пофиг. Но есть страдальцы, что же поделаешь?
от страдальцев требуется внятно изложить, по чему же они страдают

Alexey
29.08.2018
18:09:33
если бы ко всем плюсам го добавить возможность решать ежедневные задачи без кодогенерации было бы очень круто

Alexey
29.08.2018
18:10:33
да мы с тобой уже обсуждали. я не буду снова. тебе лень или ты предложишь кодогенерацию.

Daniel
29.08.2018
18:10:53
обсуждали

Alexander
29.08.2018
18:11:13
Кстати, в С++ можно больше половины всех этих прелестей не использовать, а говнокодить не хуже других... Только проблема чужой код читать, где больше половины этих фич используется как раз. А в древности народ вообще на С писал, и хорошо получалось у многих...

Daniel
29.08.2018
18:11:14
и, подумав, я решил, что тебе не генерики нужны, а типсуммы

я прав?

Страница 1323 из 1630