分解物質
;) а вообще да, вы правы
ну вообще 3 уровня вложенности это скорее локальное требование для ядерного кода
Slach
err = funcName() if err != nil { return } err = funcName2() if err != nil { return }
и получается что функция из 10 строк в которой в каждой строке может быть ошибка (а ошибки возвращаются) превращается в функцию в 40 строк
Slach
ну вообще 3 уровня вложенности это скорее локальное требование для ядерного кода
ну допустим да но при этом такая штука как gocyclo все равно посчитает цикломатическую сложность и на каждый if с проверкой ошибки добавит 2 ребра в граф
Заур
Эмм, я чего-то не понимаю? В чем проблема 3-х уровней вложенности?
Alexey
Это в том случае, если у вас не просто return err
Slach
да, но обработку ошибок можно вынести в локальную функцию
поясните кодом что это значит? вот мне хочется некоторый "транзакционный подход" реализовать для своего кода я его лучше понимаю для веб он очень хорошо ложится при обработке запроса, грубо говоря стартанули транзакцию в нескольких БД кинули исключение при любой ошибке сделали rollback транзакции все счастливы если надо retry сделали fireMessage() в какой нибудь RabbitMQ \ Nats получили "вторую попытку"
分解物質
составить массив {funcName, funcName2, funcName3} и пройтись по нему в цикле
конечно такое не прокатит если надо данные между ними получать и передавать но в изначальном примере этого нет
Alexey
поясните кодом что это значит? вот мне хочется некоторый "транзакционный подход" реализовать для своего кода я его лучше понимаю для веб он очень хорошо ложится при обработке запроса, грубо говоря стартанули транзакцию в нескольких БД кинули исключение при любой ошибке сделали rollback транзакции все счастливы если надо retry сделали fireMessage() в какой нибудь RabbitMQ \ Nats получили "вторую попытку"
В случае, когда у вас множество точек выхода из функции и в каждой точке есть какая-то одинаковая логика по обработке ошибки, можно создать локальную функцию. Это оправданно, когда у вас не просто return err, а что-то более сложное) func NewHandler (Handler, error) { wrapErr := func(err error) (Handler, error) { // дублирующаяся логика в несколько строк return nil, err } var err error err = func1() if err != nil { return wrapErr(err) } err = func2() if err != nil { return wrapErr(err) } err = func3() if err != nil { return wrapErr(err) }
Alexey
не понял ответа =)
обновил предыдущий ответ
Slach
обновил предыдущий ответ
да, у меня такое есть ну ок, кажется понял
Mikhail
find /home/m/Music/ -type f -name "*([0-9]).aac" Как этот шаблон в регулярку перевести?
Mikhail
dup, _ := regexp.Compile(`\([0-9]\).aac`) похоже что так
Slach
тогда скорее \([0-9]\).aac$
Slach
Народ, а вот еще философский вопрос как лучше логи выводить?? JSON какой нибудь типа zerolog или обычный log?
Alexander
zap/zero
Anonymous
Kirill
ассемблер еще проще!
Если задуматься - то да
Slach
Логи приложения, там и ошибки и просто In progress какой то приложение может работать как старой какой то среде на обычном bare metal либо внутри Docker и логи эти потом по идее кто нибудь пробежится смотреть глазами zap/zerolog привлекают тем что лог вроде как БЫСТРЫЕ и структурированный лог на выходе НО с практической точки зрения по идее если все крутится в каком нибудь Docker/Kubernetes то он собака такая этот самый JSON преобразует в строку и обернет в свой JSON который уже отправит куда нибудь в Elasticsearch так ведь?
Mikhail
тогда скорее \([0-9]\).aac$
да, поправил. спасибо
Anton
недавно начал изучать проганье на golang, и я хочу узнать ваше мнение: ide от JetBrains - GoLang или VS code?
Juji
первая
Anton
спасибо
Axm
Вторая
Axm
Не слушай его
Denis
vim! не слушай обоих
Anton
Atom! никого не буду слушать
Axm
Тогда тебе нужна та жёлтая хрень из прошлого века, на которой Пайк пишет. Тут был кажется адепт.
Anton
а тут прикольное сообщество
Juji
а то )
Anonymous
а тут прикольное сообщество
Ответили в итоге на твой вопрос?
Anton
да
Anton
спасибо еще раз)
Anonymous
Ага, значит emacs выбрал... Ну ок! ))
ainu
Я за VsCode
Mikhail
я за goland
Ivan
я за goland
а ты его купил?
Mikhail
а ты его купил?
конечно) на китайском сайте
Constantine️
распродажа была )))
Oleksii
а ты его купил?
Он стоит 9$ в месяц
Oleksii
Это совсем не дорого за качественный инструмент
Mikhail
Он стоит 9$ в месяц
он стоит очень бесплатно) http://blog.lanyus.com/archives/314.html
Mikhail
Не поддерживаю этого.
Оно и без тебя не падает))
Mikhail
Не поддерживаю этого.
может еще музыку с фильмами начать покупать?))
Oleksii
может еще музыку с фильмами начать покупать?))
Это уже вопрос личный каждого, не вижу в этом ничего смешного
Oleksii
Музыка и сериалы со стриминговых сервисов очень удобно используется и покупается.
Dug
может еще музыку с фильмами начать покупать?))
А можете разъяснить, что плохого в покупке музыки и фильмов?
Dug
(просто интересно)
Dug
Ну вы так сказали, будто это унизительно или позорно)
Mikhail
Это не умно. Но никак не унизительно и никак не позорно.
Dug
И почему не умно?
Dug
Не умно платить людям за их работу?
Mikhail
Зачем платить, если это можно взять?
Dug
Вы свою работу просто так отдаёте? Или может быть отдадите?)
Mikhail
Я свою работу в интернет не выкладываю
Dug
Но у вашего продукта ведь есть какой-то конечный потребитель?
Mikhail
И вообще этот спор ни о чём. Хотите платить - ваше право. Я за собой оставлю право считать вас не умными. 😏
Dug
Да не, какой спор. Мне просто интересно, почему вы так считаете. Не просто "ну почему если оно валяется, то не взять бы его", а развернутое мнение
Aleksandr
по-моему он доходчиво объяснил - "потому что могу"
Bob Ef
По-моему тут всё проще, есть деньги - платишь, если сосеш лапу тогда воруешь
Dug
Ну и ладно
Mikhail
Скопировал бесплатно.
Bob Ef
Не занимаетесь самообманом. И да, я тоже не безгрешен
朝の日差し ✙
самое смешное в этом мире, это когда ит-шники спорят о пиратстве.
Mikhail
самое смешное в этом мире, это когда ит-шники спорят о пиратстве.
Чёрд. Я то думал когда медведь на баяне играет..
朝の日差し ✙
а что в этом смешного-то? нормальный медведь
Mikhail
Юмор такая вещь.. Кому-то смешно про ит и пиратов, а кому-то медведь на баяне)