Size: a a a

2020 April 29

V

Vladislav in Go-go!
МишанЯ
Вопрос: Горутина закрывается сама, когда код выполнил свою задачу или что то остаётся и ее явно надо закрывать? Return не надо же вызывать ?
если ей больше нечего делать, то да, закроется сама (процесс дошел до последней инструкции и потом умирает)
источник

М

МишанЯ in Go-go!
Vladislav
если ей больше нечего делать, то да, закроется сама (процесс дошел до последней инструкции и потом умирает)
Даже в ответвлениях if else?
источник

V

Vladislav in Go-go!
МишанЯ
Даже в ответвлениях if else?
если исполнение окончено, то да.
можно проверить вот этим https://golang.org/pkg/runtime/#NumGoroutine
источник

E

Edgar in Go-go!
Vladislav
у меня тут спор с коллегой произошел. Скажите, это нормально хранить контекст, БД, клиенты и вообще разные структуры внутри для исполнения сложных расчетов?
Цель - не перегружать методы бесконечным набором параметров, потому это все хранится внутри. С его слов это антипаттерн, я не согласен
Это выглядит примерно так:

https://goplay.space/#NfjEAbSiKJ2
Я попытался разобраться в этом коде, я показал его коллегам и все пришли к одному выводу

Что это такое?
источник

E

Edgar in Go-go!
c.db.Select(c.ctx, c.db) - вот это вообще удивляет, если есть соединение с бд, зачем оно должно принимать параметром бд с которым держит уже соединение?
источник

E

Edgar in Go-go!
Либо пример оч неудачный, и я бы попросил это переписать на иной вариант
источник

V

Vladislav in Go-go!
Edgar
Я попытался разобраться в этом коде, я показал его коллегам и все пришли к одному выводу

Что это такое?
в реальности это калькулятор, внутри него есть кэш и несколько клиентов. в руте я вызываю
calc := New(ctx, db)
calc.Calculate(data)

и после получаю результат. ну а методы внутри берут все из себя, а не в виде параметров
источник

E

Edgar in Go-go!
Тебе объяснить, почему это СУПЕР не явно?
источник

V

Vladislav in Go-go!
Edgar
Тебе объяснить, почему это СУПЕР не явно?
можно попробовать
(я хотел избежать calculate(ctx, db, data1, data2, data3, …) и сделать, по крайней мере, `calculate(data1, data2, data3, …)`).
Потому и спрсоил, если это плорхо, то надо будет исправить
источник

V

Vladislav in Go-go!
Edgar
Тебе объяснить, почему это СУПЕР не явно?
я вижу это, что если вызвать без инициализации, то можно словить панику. вроде это единственная проблема
источник

R

Rochfort in Go-go!
Vladislav
я вижу это, что если вызвать без инициализации, то можно словить панику. вроде это единственная проблема
Чтобы так не было надо структуру сделать приватной, сделать интерфейс для калькулятора и из фабрики возвращать интерфейс
источник

R

Rochfort in Go-go!
И мне тоже очень интересно почему это супер неявно
источник

NT

Nikita Tarasov in Go-go!
Всем привет. Я только начинающий разработчик и еще учусь. Но у меня при компиляции получаются такие ошибки (проблема с импортами и отрпвка пост запроса). Прописывал func.URL но все равно такая же проблема. Помогите пожалуйста!) Заранее спасибо))
источник

V

Vladislav in Go-go!
Rochfort
Чтобы так не было надо структуру сделать приватной, сделать интерфейс для калькулятора и из фабрики возвращать интерфейс
да… верно, сейчас я все делаю через фабрику:)
но тут другой вопрос - сокрытие клиентов внутри самой структуры(в моем случае коллега очень был не доволен использованием контекста не в виде параметра функции). Тут более аккуратный и осмысленный пример):
https://goplay.space/#gPshfPs4gQ0
источник

A

Aikidos in Go-go!
Vladislav
у меня тут спор с коллегой произошел. Скажите, это нормально хранить контекст, БД, клиенты и вообще разные структуры внутри для исполнения сложных расчетов?
Цель - не перегружать методы бесконечным набором параметров, потому это все хранится внутри. С его слов это антипаттерн, я не согласен
Это выглядит примерно так:

https://goplay.space/#NfjEAbSiKJ2
А как называется антипаттерн коллега сказал?
источник

V

Vladislav in Go-go!
Aikidos
А как называется антипаттерн коллега сказал?
контекст всегда передается в функцию первым аргументом
источник

NG

Nikita Gritsai in Go-go!
calc := New(ctx, db) ну так?)
источник

NG

Nikita Gritsai in Go-go!
(шутка)
источник

R

Rochfort in Go-go!
Vladislav
контекст всегда передается в функцию первым аргументом
Вообще логично было бы контекст передавать в каждую функцию т.к. инстанс калькулятора мы делаем один раз и дальше вызываем где нужно с нужным контекстом, если я все правильно понимаю
источник

NG

Nikita Gritsai in Go-go!
Nikita Tarasov
Всем привет. Я только начинающий разработчик и еще учусь. Но у меня при компиляции получаются такие ошибки (проблема с импортами и отрпвка пост запроса). Прописывал func.URL но все равно такая же проблема. Помогите пожалуйста!) Заранее спасибо))
- “io/ioutil” импортирован но не используется (так в go нельзя, и переменные тоже нельзя обьявлять и не использовать
- пакет “url” не ипортирован
- неправильно передаете параметры в метод http.PostFrom, в данном слуачае слишком много параметров
источник