@gogolang

Страница 1167 из 1630
Алексей
20.06.2018
15:07:39
и дженерики запихнули

Daniel
20.06.2018
15:07:41
во всю

Алексей
20.06.2018
15:07:44
где-то в чатике даже было

Daniel
20.06.2018
15:07:55
генерики не запихнули

Google
$continue$
20.06.2018
15:08:02
Всем привет. Кто использовал revel? Написано, что он фулл стэк, но вопрос, как в нем бэкенд использовать? Прощу палками не кидать ?

Maksim (Ellrion)
20.06.2018
15:10:39
а, то есть ошибки по умолчанию стектрейса своего возникновения никак не содержат замечательно!
для ошибок нормально юзать что то типо https://godoc.org/github.com/pkg/errors или свое похожее. но на ошибки внутри пакетов конечно это не повлеяет

Kaspar
20.06.2018
15:15:27
и что все пишут одну строчку логики и три боилерплейта?
ну можешь вот так сделать, как вариант check(err) func check(e error) { if e != nil { handle } }

Maksim (Ellrion)
20.06.2018
15:17:40
ну можешь вот так сделать, как вариант check(err) func check(e error) { if e != nil { handle } }
если там не panic и не os.Exit() то то что ты написал не поможет от https://t.me/gogolang/116574

а их применять можно очень не всегда

Алексей
20.06.2018
15:21:30
https://blog.golang.org/defer-panic-and-recover For a real-world example of panic and recover, see the json package from the Go standard library. It decodes JSON-encoded data with a set of recursive functions. When malformed JSON is encountered, the parser calls panic to unwind the stack to the top-level function call, which recovers from the panic and returns an appropriate error value Исключений как бы нет в Golang, но они есть.

Kaspar
20.06.2018
15:23:26
ну если 20 однотипных проверок, можно их вынести в 1 общую. С едиными return values, etc

Kaspar
20.06.2018
15:26:25
да, ты прав

Google
Kirill
20.06.2018
15:26:49
Constantine
20.06.2018
15:26:57
шта
ты не прав

Алексей
20.06.2018
15:27:03
не ну можно конечно оставить самый последний if в некоторых случаях, но это не совсем правильно на мой взгляд

Kirill
20.06.2018
15:27:35
ты не прав
конечно. я лев.

Daniel
20.06.2018
15:52:58
Кстати, а что за непотребства?
Мое любимое - пустой catch

Алексей
20.06.2018
15:54:21
Мое любимое - пустой catch
Ну так Go от этого никак не защищает

if er != nil { }

Никита
20.06.2018
15:54:42
except BasicException: pass

Алексей
20.06.2018
15:55:17
if er != nil { }
или наверное даже тупо result, _ := doSomething()

Tigran
20.06.2018
15:55:21
if er != nil { }
а можно просто result, _ = func()

Алексей
20.06.2018
15:55:40
во во

Илья
20.06.2018
15:55:44
ну, линтеры на такое ругаются, обычно

Алексей
20.06.2018
15:56:14
ну то есть фактически ситуация от пустого catch не отличается ничем

Denis
20.06.2018
15:56:25
на присвоение blank identifier _ по дефолту линтеры не ругаются, надо включать явно опцию errcheck

Alan
20.06.2018
15:56:52
Да, с ошибками беда в го Я в этом случае просто смотрю код какого-нибудь крупного проекта) Те же докер, кубер

Denis
20.06.2018
15:56:55
хотя gas по дефолту ругается

Никита
20.06.2018
15:58:07
А чем обработка в Go хуже чем в других яп? И где она хороша, если так говорить уже

Никита
20.06.2018
15:59:04
Спрашиваю же — чем?

Google
Алексей
20.06.2018
16:00:13
Спрашиваю же — чем?
Тем что не надо писать бесконечные if er != nil

тем что эксепшены содержат стектрейс по которому можно отследить место возникновения ошибки

Никита
20.06.2018
16:00:38
Ну а в других яп бесконечные try catch

Алексей
20.06.2018
16:00:47
Никита
20.06.2018
16:00:56
Приведите пример

Алексей
20.06.2018
16:02:01
Приведите пример
//JS try { //огромное количество кода с кучей вызовов функций } catch (e) { console.log(e); }

Kirill
20.06.2018
16:02:06
//JS try { //огромное количество кода с кучей вызовов функций } catch (e) { console.log(e); }
Ужас же. Никакой обработки ошибок, тупо в консоль пользователю срать, жесть

Kirill
20.06.2018
16:02:53
Равен хотя бы прикрутили бы

Алексей
20.06.2018
16:02:53
в catch что угодно может быть

Алексей
20.06.2018
16:03:21
s/console.log(e);/throw e/g
тогда try catch уже и не нужен

Sergey
20.06.2018
16:03:32
Kirill
20.06.2018
16:03:34
s/console.log(e);/throw e/g
А ещё хуже можешь?

Илья
20.06.2018
16:03:56
exit(0)

Алексей
20.06.2018
16:04:00
Sergey
20.06.2018
16:04:04
А ещё хуже можешь?
а в го не так разве? value, err = get(); err != nil { return nil, err }

Kirill
20.06.2018
16:06:27
а в го не так разве? value, err = get(); err != nil { return nil, err }
if value, err := someFunc(); err != nil { switch err.(type) { case ErrConnLost: sendAlert(err) reconnect() ctx.Err500() // more cases here } }

Google
Sergey
20.06.2018
16:07:25
из головы синтаксис выдумал, не знаю как там на первоисточнике

Алексей
20.06.2018
16:07:49
func mainFunc() (int, error) { r1, err := func1() if err != nil { return 0, err } r2, err := func2(r1) if err != nil { return 0, err } r3, err := func3(r1, r2) if err != nil { return 0, err } return r1 + r2 + r3, nil } vs function mainFunc() { const r1 = func1(); const r2 = func2(r1); const r3 = func3(r1, r2); return r1 + r2 + r3; }

Алексей
20.06.2018
16:08:49
проблема Go в том, что приходится обрабатывать ошибки даже тогда, когда по логике не нужно обрабатывать ошибки (точнее нужно их просто прокинуть вверх по стеку)

а блин

Kirill
20.06.2018
16:09:14
почему?
Гора синтаксических ошибок %)

Алексей
20.06.2018
16:10:13
Гора синтаксических ошибок %)
ничего страшного, я не для компилятора этот код написал

Kirill
20.06.2018
16:10:19
Вы забываете, похоже, что можно не делать обертку, когда даже обработки ошибок вообще не будет

Admin
ERROR: S client not available

Maksim (Ellrion)
20.06.2018
16:10:20
Гора синтаксических ошибок %)
щас бы к псевдокоду придераться который идею показывает

Roman
20.06.2018
16:10:27
Но смысл ведь понятен.

Daniel
20.06.2018
16:12:38
а можно просто result, _ = func()
Линтеры ругаются, кстати

Kirill
20.06.2018
16:12:45
и словить nil dereference
Нет, я говорил только об обработке внутри обёртки

Sergey
20.06.2018
16:13:04
я тогда совсем не понял

Алексей
20.06.2018
16:13:13
я чего то не понимаю, про какую обёртку идёт речь?

Блин, от обработки ошибок в Go у меня бомбит больше всего. Самый главный и критичный недостаток Go.

Google
Алексей
20.06.2018
16:24:12
Рили?
Знаком такой принцип DRY? Вот он в Go в плане ошибок нарушается очень активно, без добавления каких-либо существенных преимуществ.

Сделали бы хотя бы какое-нибудь ключевое слово чтоли, которое автоматически бы проверяло наличие ошибки и с возвратом из функции этой самой ошибки. Было бы вообще огонь.

Алексей
20.06.2018
16:26:39
ну это плохо

Кто-нибудь знает, будет ли это исправляться в Go2?

Или "и так сойдёт"?

Kaspar
20.06.2018
16:31:08
ну это плохо
Как по мне так велосипеды ради 100% dry ещё хуже

Алексей
20.06.2018
16:31:30
Vadim
20.06.2018
16:31:35
Черт знает. Вроде бы это не должно ломать обратной совместимости.

Daniel
20.06.2018
16:32:11
Алексей
20.06.2018
16:32:36
ну то что я предложил - ключевое слово или оператор для проброса ошибки

Daniel
20.06.2018
16:32:39
давайте в конструктивное русло смещаться, коллеги

ну то что я предложил - ключевое слово или оператор для проброса ошибки
я говорю - напишите спеку детальную. быстро пройдут шапкозакидательские настроения

мне самому очень нравятся reported exceptions в java

но кончилось с ними дело плохо

Алексей
20.06.2018
16:33:53
так экспешены в го нельзя завезти уже никак

и я не про эксепшены вообще

Daniel
20.06.2018
16:40:07
еще раз

была отличная идея, но люди ее испоганили

если очень хочется, можете придумать свою, и посмотреть, что люди сделают с нею

Kirill
20.06.2018
16:42:58
спойлер: ничего хорошего

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