Pawel
вот и разберись
🏁Александр
Anatoly
вот и разберись
Первая ссылка в гугле, дабы не переписывать все это еще раз: https://habrahabr.ru/post/148905/
Мерль
Anatoly
Мне больше не enum не хватает, а variant (
Для интеграции с чем? COM вроде уже почти умер, а больше ничего в голову не идет.
Anatoly
Хз, я прост вариант встречал только в COM интерфейсах на венде.
Anatoly
Для чего он нужен?
Мерль
Для чего он нужен?
Это строго типизированный безопасный union Можно например по каналу передавать значения разных типов
Anatoly
Разве это хорошо?
Мерль
Разве это хорошо?
Это очень хорошо
Anatoly
Хорошо. Ты меня убедил.
Мерль
👍
Pawel
Первая ссылка в гугле, дабы не переписывать все это еще раз: https://habrahabr.ru/post/148905/
не, ну мальчики с хабра могут считать утиной типизацией всё что угодно, им не запретишь ведь. . В Го это по другому устроено - через интерфейсы, а не через дурацкие констрайнты (которые ни один нормальный человек не пишет сам, поскольку синтаксис уёбищный). Поэтому возвращая к твоему предложению, в Го оно означло бы монкипатчинг, что есть зло
Anatoly
А вот ты - нет.
Pawel
это потому что ты не понял чем отличается костыльный ad hoc полиморфизм на ограничениях дженериков, о котором рассказали мальчичи из хабра, от утиной типизации в Го. Просто разберись
🏁Александр
Anatoly
это потому что ты не понял чем отличается костыльный ad hoc полиморфизм на ограничениях дженериков, о котором рассказали мальчичи из хабра, от утиной типизации в Го. Просто разберись
Приведи пример. Я не могу понять о чем ты. В шарпе я могу описать интерфейс, создать в рантайме любой объект этого интерфейса и положить его в экземпляр класса реализующего этот интерфейс. То, чем занимаются сотни DI-контейнеров. Что не так? Тебе не нравится явная реализация интерфейса классом?
Anatoly
Это если брать самый просто случай. Без линка.
Pawel
не нравится конечно, иначе я писал бы на C#, а не на Го, в котором не надо явно перечислять интерфейсы, которые реализует тип - это жесть конечно. Но в данном случае речь не об этом. Ресь о том, что в C# методы расширения так или иначе не нарушают инвариант расширяемого класса, а в Го нарушили бы, поэтому их в Го не будет
Anatoly
Faster golang builds #golang https://ttboj.wordpress.com/2017/02/26/faster-golang-builds/
Pawel
Чтобы ты понел, нельзя на С# (а также VB и F#) написать функцию, которая принимает в качестве параметра любой объект, у которого есть не статический метод string Error() например, а на Го это задача для тех, кто только сегодня узнал про Го. Поэтому если предположить, что отцы основатели Го ебанулись и впендюрили в Го 2 методы расширения по образцу C#, то вызывающий код сможет полностью сломать все контракты вызываемого кода, как это сейчас в javascript-е
Alexey
> отцы основатели Го ебанулись и впендюрили в Го 2 методы расширения по образцу C#, 😱😂😂
🏁Александр
эту цитату вне контекста можно сразу в горячее кидать, тема будет бомбическая :)
🏁Александр
призываю ализара, щаз на хабр тиснем "аналитическую" статью
Aliaksandr
Faster golang builds #golang https://ttboj.wordpress.com/2017/02/26/faster-golang-builds/
в go 1.10 не нужно будет делать go build -i - https://groups.google.com/d/msg/golang-dev/EZtZsJG35ZM/2xMhVLu9BQAJ
Aleksandr
Кто использует монго драйвер? Посоветуйте "живую" библиотеку пожалуйста.
Nikita
mgo
Aleksandr
3.6 не поддерживает
Aleksandr
а изменения файлов были давно, поэтому делаю вывод, что она не слишком живая
Nikita
c 3.4 точно работает
Aleksandr
может есть опыт юза с++ либы?
Aleksandr
3.6 нид
Nikita
а изменения файлов были давно, поэтому делаю вывод, что она не слишком живая
увы, но она единственное, что адекватно работает с монгой
Nikita
может есть опыт юза с++ либы?
тернистый слишком путь)
Aleksandr
cgo + adapter?)
Aleksandr
зашквар?)
Nikita
зашквар?)
думаю да) а что именно не работает?
Nikita
с 3.6
Aleksandr
changestream
Nikita
а через dbRun нет вариантов? я не знаком еще с changestream
🏁Александр
народ, кто сталкивался
🏁Александр
json: cannot unmarshal float64 into Go value of type String
🏁Александр
внимание вопрос: как это корректно обойти?
🏁Александр
по хорошему это ошибка валидации
Nikita
типы не соответствуют
🏁Александр
но до валидатора еще даже не дошло
🏁Александр
Nikita
капитан
Он самый)
Aleksandr
а через dbRun нет вариантов? я не знаком еще с changestream
changestream возвращает изменения в коллекции
🏁Александр
вопрос блин не в "что это за ошибка помогите", а как кашерно все развернуть :)
Aleksandr
сопоставить типы
Nikita
changestream возвращает изменения в коллекции
в курсе, но не юзал еще, посмотри через run
Aleksandr
спасибо, Никита
🏁Александр
что значит "сопоставить типы"? :)
Nikita
вопрос блин не в "что это за ошибка помогите", а как кашерно все развернуть :)
передавать номральные типы, ну или interface (но второй вариант хреновый, если ты проектируешь апи например)
Aleksandr
{"float":1234} {"string":"1234"} - good {"float":"1234"} {"string":1} - bad
🏁Александр
🏁Александр
их надо корректно послать
🏁Александр
с тычком в нос, в каком поле облажались
Nikita
а у меня http api, "плохие клиенты" могут что угодно передавать
что угодно - это проблема плохих клиентов, делай хорошее апи
Nikita
ну или принимай через интерфейс и приводи к нужному типу уже сам
Aleksandr
400 bad request )
🏁Александр
в пыхе например при таком, оно скажет что "вася ты мудак, прислал нам fileld типа такого то, а мы ждали такой то" :)
🏁Александр
а тут просто получается "вася ты мудак, точка"
Aleksandr
&
Aleksandr
?
🏁Александр
400 bad request )
ты не поверишь, оно откидывает 400
🏁Александр
это где оно такое расскажет?? ;) вы простите в stdout делаете display_errors on ???
c дубу рухнули? кастомный класс валидации конечно, который вручную проверяет типы
🏁Александр
и корректно формирует json ответ с посылом
Slach
ну и? что мешает поискать пакеты валидации и посмотреть куда они логирование делают ?
Aleksandr
obj, err := ..... if err != nil { response.write(err.Error()) - ne? }
🏁Александр
И, конечно, через фабрику ?
глобальный объект который реализует "реестр фабрик", которые зарегистированны с помощью....