
Pawel
03.07.2018
12:13:11
вот этот плачь Ярославны про ужасы проверок if err != nil в исполнеии юзера @a_alexei_0 я слышу регулярно от начинающих в Го оладухов с низким левелем. Заканчивается всё одинаково. Оладух начинает пропускать ошибки, рано или поздно ревьюер и checkerr его не одёрнут, в проде код ломается, оладух получает пиздюлей и осознаёт что способ обработки ошибок в голанге не таку ж и плох, плач прекращается

Vladimir
03.07.2018
12:17:54

Алексей
03.07.2018
12:24:41
но вот опять же в логгер ошибки летят обычно на самой вершине стека, а значит надо руками пробрасывать их наверх

Google

Алексей
03.07.2018
12:28:49
точнее даже так: для того, чтобы вернуть ошибку из функции неужно сделать больше телодвижений, чем просто заглушить ошибку

Vladimir
03.07.2018
12:30:22
func foo() (res []byte, error) {
<...>
if err != nil {
return nil, err
}
...
}чо тут сложного?

Алексей
03.07.2018
12:31:26
в каком месте?
val, err := something()
if er != nil {
return nil, err
}
vs
val, _ := something()

Vladimir
03.07.2018
12:31:42
ужас та какой

Алексей
03.07.2018
12:31:53
не сложно вообще
но код раздувается
появляется код, который вообще не несёт смысловой нагрузки
Причём самое интересное то, что пожалуй Go - единственный из популярных языков в котором работа с ошибками столь топорно сделана.

Никита
03.07.2018
12:40:02
Чем она плоха?
Я вот вообще не понимаю что вам не нравится в обработке ошибок в Го

Google

Aleksei
03.07.2018
12:41:06
когда ж надоест-то про обработку ошибок одно и то же обсуждать? у того, кого не устраивает обработка ошибок в го, есть три пути - 1) в команду девелоперов го и там всё менять, 2) понять, простить, использовать 3) выкинуть и забыть как страшный сон. четвертый путь - нытье в чатике - наиболее бессмысленный.

Алексей
03.07.2018
12:41:33

Alexander
03.07.2018
12:47:32
Это все через стек вызовов передается, если я ничего не путаю. А это не сильно напряжно.

Алексей
03.07.2018
12:50:29
причём тут стек, я вообще не про это сейчас, я про сам код на Go
и я не писал, что вернуть ошибку из функции как-то очень сложно, я писал про то, что проще заглушить и не вернуть, чем вернуть, и кода меньше будет

Alexander
03.07.2018
12:50:44
В общем, как и со всеми языками. Кто умеет программировать - пользуется, Остальные ноют по сторонам.

Алексей
03.07.2018
12:51:37

Alexander
03.07.2018
12:52:34
такое чувство, словно сегодня все же пятница...

Александр
03.07.2018
12:53:51
https://play.golang.org/p/6Ovq6C2O6Wo
как вам такое дерьмо?
?

Pawel
03.07.2018
12:54:00

Alexander
03.07.2018
12:55:23
парни, о чем вы спорите?

Евгений
03.07.2018
12:57:00
Так есть же несколько костыльно-человеческих реализаций через iota , кодогенерацию и пр

Alexander
03.07.2018
12:58:10
давайте лучше готовиться к пятничным баталиям про голубого сурка! Патриотично это или нет? Как вобще можно писать на таком языке, попирающем скрепы казацкой и КГБ-шной жизни?

Алексей
03.07.2018
12:59:03
Я сейчас серьёзно спрашиваю.

Jentry
03.07.2018
12:59:45
Плюсую

Google

Alexander
03.07.2018
12:59:56
посреди флуда серьезно спрашивать бесполезно

Вячеслав
03.07.2018
13:04:23
Можно ли в t.Execute передать вторым параметров не структуру а просто key:value?
t, _ := template.ParseFiles(tempDir+"adminka/index.html")
t.Execute(w, &page{Title: "adminka", Msg: "test2"})
если у мнея много страниц с разными полями - надо для каждой структуру делать со своим набором ключей получается?

Alexander
03.07.2018
13:05:54
структуру передать нельзя, только указатель. Тернарного условного оператора тоже нет

Вячеслав
03.07.2018
13:07:13
тоесть вместо указателя можно сразу написать {"title": 'ffff'j, "Msg": "fff"} вот так как нибуь можно?

Alexander
03.07.2018
13:07:58
ты пробовал так написать?

Pawel
03.07.2018
13:08:08

Алексей
03.07.2018
13:08:33

Alexander
03.07.2018
13:09:05

Алексей
03.07.2018
13:09:20

Вячеслав
03.07.2018
13:10:02

Aleksandr
03.07.2018
13:11:16
наблюдаю за этим уже 3 часа. на сутки зарестриктил троих.

Zaur
03.07.2018
13:12:42
Так все таки нужны дженерики или нет?
Как думаете

Aleksandr
03.07.2018
13:14:15
как мы думаем, уже высказались сотню раз. имеет смысл практические задачи решать, а не мусолить одну и ту же аргументацию

Zaur
03.07.2018
13:14:52
Дуров офигеет от активности голанг сообщества

Илья
03.07.2018
13:16:48
а в шаблоне {{range .}}

Nazary
03.07.2018
13:17:46
Это наверное лучшая левая конфа которая у меня есть) ❤

Google

Вячеслав
03.07.2018
13:18:59

Admin
ERROR: S client not available

Илья
03.07.2018
13:19:05
нет

Вячеслав
03.07.2018
13:19:59
а можно плз пример с map[string]interface{} ?

Илья
03.07.2018
13:33:22
фу блин, как люди только этим пользуются :(

Вячеслав
03.07.2018
13:37:32
оо получилось спс!

Илья
03.07.2018
13:52:22

Вячеслав
03.07.2018
13:55:27
пасиб! а посоветуйте плз как сделать чтобы шаблон мог включать другой шаблон в себя {{ template: "base"}} где то советуют фрейморки какието использовать где то еще чтото...

Илья
03.07.2018
13:56:40
это вам в гугл, я не пользуюсь template, кроме как в конфигах

Вячеслав
03.07.2018
14:25:42
https://play.golang.org/p/xIk0ACyZZmu
как только в шаблон добавляю {{define "header"}} {{end}} то ошибка...

The
03.07.2018
14:27:43
1. парсишь все файлы
2. в шаблоне {{define "header"}} ...... {{ end }}
3. в основном шаблоне {{ template "header" . }}
кто что юзает для рисования диаграм, в т.ч. concurrency?
нужно как-то структурировать многопоточность на листе, чтобы было удобней понимать работу

Kaspar
03.07.2018
15:50:43

GoodMoodDealler
03.07.2018
15:51:19
В чем может быть проблема?

The
03.07.2018
15:51:31

tsov
03.07.2018
16:30:19

Никита
03.07.2018
16:47:27

Fastumkruk ✅
03.07.2018
16:49:52
Всем привет. Какой командой в tgbotapi редактировать уже отправленное сообщение?

Google

Aleksandr
03.07.2018
16:55:51
в доке глянь

Dmitri
03.07.2018
17:14:50

Fastumkruk ✅
03.07.2018
17:18:27

Dmitri
03.07.2018
17:18:48

Fastumkruk ✅
03.07.2018
17:19:00

Vadim
03.07.2018
17:21:51
tgbotapi.NewEditMessageText()

stixlink
03.07.2018
18:42:25
скажите, пожалуйста, почему структура не подходит под интерфейс ? https://pastebin.com/9YYjy7En

Aleksandr
03.07.2018
18:43:31
CalculatePeriodDate(p structure.VideoBoostUpParameters) (time.Time, time.Time)
CalculatePeriodDate(p *structure.VideoBoostUpParameters) (time.Time, time.Time)
найди разницу