
Алексей
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? Написано, что он фулл стэк, но вопрос, как в нем бэкенд использовать?
Прощу палками не кидать ?

Алексей
20.06.2018
15:08:17
https://github.com/albrow/fo

Maksim (Ellrion)
20.06.2018
15:10:39

Алексей
20.06.2018
15:11:54

Kaspar
20.06.2018
15:15:27

Maksim (Ellrion)
20.06.2018
15:17:40
а их применять можно очень не всегда

Алексей
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

Алексей
20.06.2018
15:23:40

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

Алексей
20.06.2018
15:54:21
if er != nil {
}

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

Алексей
20.06.2018
15:55:17

Tigran
20.06.2018
15:55:21

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

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

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

Kirill
20.06.2018
15:56:18

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:58:43

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

Google

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

Никита
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

Алексей
20.06.2018
16:02:47

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

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

Sergey
20.06.2018
16:03:05

Алексей
20.06.2018
16:03:21

Sergey
20.06.2018
16:03:32

Kirill
20.06.2018
16:03:34

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

Алексей
20.06.2018
16:04:00

Sergey
20.06.2018
16:04:04

Kirill
20.06.2018
16:06:27

Sergey
20.06.2018
16:07:16

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;
}

Kirill
20.06.2018
16:08:27
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
Но смысл ведь понятен.

Алексей
20.06.2018
16:10:37

Sergey
20.06.2018
16:12:12

Daniel
20.06.2018
16:12:38

Kirill
20.06.2018
16:12:45

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

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

Oleg
20.06.2018
16:22:38

Google

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

Vadim
20.06.2018
16:26:06

Алексей
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
Черт знает. Вроде бы это не должно ломать обратной совместимости.

Алексей
20.06.2018
16:31:53

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
спойлер: ничего хорошего