Andrey
я про второй вариант error types
Andrey
помните, я говорил, что вызывающему каст придётся делать
Andrey
в-общем, не всё так просто
Andrey
везде downsides
Илья
если вызываещему не важно, какая ошибка произошла, ему делать ничего не нужно, если есть необходимость, вы можете сделать хелперы (пример из стандартной либы os я кидал выше), что за downsides, неясно, возвращать вы все равно будете интерфейс error, в чем у вас проблема я понял, называется nil interface, встречается не только при обработке ошибок, про это нужно знать
Антон
Илья
Антон
Илья
От функции зависит
в го такого нет, и аналогов паттерн матчинга по аналогии с растом/хаскелем/ерлангом местами и правда не хватает, но жить это не мешает
Илья
Илья
хм, все логично, если, в случае возникновения ошибки, вы не можете продолжить, и вам пришла неизвестная ошибка, которую вы не обработали, программа же должна упасть?
Антон
хм, все логично, если, в случае возникновения ошибки, вы не можете продолжить, и вам пришла неизвестная ошибка, которую вы не обработали, программа же должна упасть?
Проблема в том, что в Go ты в принципе не можешь быть уверен, что обработал все ошибки, не смотря в код
Andrey
в питоне с эксепшионами такая же фигня
Andrey
есть
Илья
Andrey
полная фраза
в питоне с эксепшионами ты в принципе не можешь быть уверен, что обработал все ошибки, не смотря в код
Andrey
а если смотреть, то надо прям в весь код смотреть, и в тот, что вызываешь, тоже
Алексей
Andrey
получил невалидные данные, и не проверил
Антон
эмм, а в языке, где все есть, кроме HKT, ты пишешь обработчики ошибок, не смотря в код?
В языке-который-нельзя-называть функции, которые завершаются нефатальной ошибкой, возвращают Result, у которого два возможных взаимоисключающих варианта - Ok и Err. Так как этот тип обобщённый, то в варианте Err может быть любой тип, в том числе и тип, суммирующий все ошибки внутрилежащих функций
Andrey
не в курсе вашего юмора, что это за язык такой?
Илья
Илья
но жить без нее можно :)
Антон
Алексей
ну просто можно в питоне перехватить Exception, правда я бы не назвал это прям обработкой
Антон
Это выживание
Andrey
Антон
Илья
Это выживание
в скольки промышленных языках реализована подобная концепция?
Алексей
Алексей
так что всё таки значит
Ευγένιος
2018 год, люди все ещё спорят по поводу исключений в го.
Denis
Алексей
без дженериков то можно худо-бедно прожить
Denis
Ευγένιος
Сейчас все сообщество го будет или триггерится или фейспалмить.
Denis
Алексей
Andrey
да не обязательно
Алексей
и за такое по рукам надо бить
Andrey
функция считает ошибку частью возвращаемых данных, ей не надо исключение вызывать
Andrey
что за язык то?
Илья
ржавчина
Andrey
о
Andrey
так и думал
Denis
Alexander
руст небось
Andrey
зобаньте его, он проговррился
Andrey
и этого
Ivan
Рустика
Denis
благодарю
Denis
Илья
гошка изначально выигрывала, по моим ощущениям, более понятным синтаксисом, большой стд либой и тулингом из коробки, на чем и выехала
Алексей
BRZ
в pq нет, в pgx/pgtype вроде бы есть
Я нашел решение как описать запрос в моделе если интересно вот решение
db.Model(&q).Column(«name»).
ColumnExpr("array_agg(id) as id»).Group(«name»).Select()
Илья
и хайпом гугла
хз, я бы сказал, что поддержка гугла помогала языку набирать стд либу, я влез в го из колбэкхелла в libev, и так и остался
BRZ
сам запрос sql SELECT name, array_agg(id) from my_tables group by name продублировал если кому то лень листать)
Алексей
Алексей
Хотя на самом деле я не встречал ничего лучше чем горутины
heavycharged
кто-то юзает в данный момент chromedp + chrome headless?
heavycharged
раньше работал, сейчас что-то перестал
Duamel
Daniel
вопрос не ясен
Daniel
генератор дот-файла вы хотите написать? или ищете готовый?
Slava
надо со слайса структур построит ьдот файцл, потом запустить его и получит ьпдф или пнг картинку
Slava
структура type DOTrecord struct{
ParentMs string
childMs string
listOfCalls []string
}
в такмо виде
Daniel
в чем проблема-то?