
Никита
30.09.2018
12:56:43
Ну да, все ок

Александр
30.09.2018
12:57:01
dao_mysql получается должен "инклюдить" dao
я боюсь как бы циклической не получилось

V
30.09.2018
12:57:13
Не должен

Google

Никита
30.09.2018
12:57:44

V
30.09.2018
12:58:18
А, ну хотя если юзер общий на пакеты, то должен

Никита
30.09.2018
12:58:23
Вообще глянь на примеры чистой архитектуры на Го, очень похоже на то, чего ты хочешь добиться

Александр
30.09.2018
12:59:33
ну я по ней и делаю
получается handlers используют интерфейс с пакета dao...
а реализация кормиться только в main - UserRepositoryMysql

V
30.09.2018
13:00:33
Зачем в пакете с моделью интерфейс репозитория?

Александр
30.09.2018
13:00:52
https://habr.com/post/271157/

Никита
30.09.2018
13:00:56

Александр
30.09.2018
13:00:59
ну так было в статьи
они делают абстрактный пакет всего
а релизация отдельно

Никита
30.09.2018
13:01:23
https://github.com/bxcodec/go-clean-arch

Google

Никита
30.09.2018
13:01:29
Вот тут очень хорошая реализация
Советую ее глянуть

V
30.09.2018
13:02:50
Я в четыре слоя (= пакета) делаю, проблем пока не было

Александр
30.09.2018
13:08:21
думаю может модель в реализацию переместить
хотя нет
реализация должна независимо от бд возращать одинаковый результат

Никита
30.09.2018
13:09:14

anatolii
30.09.2018
13:11:45
А есть ли возможность создать структуру с уже установленными значениями полей?

Никита
30.09.2018
13:12:21
а там уже через рефлексию

anatolii
30.09.2018
13:12:59
Не не, мне просто нужно иметь уже готовый "конфиг"

Никита
30.09.2018
13:13:19
А вообще лучше конфиг во внешнем файлике в yaml хранить например

anatolii
30.09.2018
13:14:14
тогда мне надо отдельно тип и отдельно переменную, думал мож есть возможность сразу, просто для удобства

Roman
30.09.2018
13:47:46
никто случайно не знает плагин для VSC для отображения спец символов дабы „->“ был представлен „→“?
или „!=“ как „≠“

Roman
30.09.2018
13:49:36

Roman
30.09.2018
13:50:48

Roman
30.09.2018
13:51:11

Roman
30.09.2018
13:51:15
хотя чёт я брежу, это ж шрифт

Google

Roman
30.09.2018
13:54:06
хотя вместо отдельного шрифта можно бы было и просто плагином одно сочитание символов на другой UTF8 символ заменять для презентации, но такого не могу найти
ибо такие операторы как := можно бы было упростить до 1 символа

Vladimir
30.09.2018
14:06:37
Вы тестировали? Я думал компилятор понимает такие вещи.
он действительно понимает
for i:=......... {
a:=....
}
что переменная а будет инициализирована при каждой итерации и убита гарбадж коллектором в конце в соответствии с синтаксисом языка!
Или тестировать соответствует ли GO своему синтаксису?

Crypt
30.09.2018
14:10:47

Vladimir
30.09.2018
14:11:30

Vadim
30.09.2018
14:11:32

Vladimir
30.09.2018
14:12:08
главная оптимизация обьявить переменную ДО цикла

Crypt
30.09.2018
14:12:22

anatolii
30.09.2018
14:17:07
Помогите плиз с интерфейсами, ато я запутался
https://play.golang.org/p/hmLYqyP6bBp
Как сделать этот код рабочим?

Никита
30.09.2018
14:22:14

anatolii
30.09.2018
14:23:24
мне нужна возможность вернуть либо указатель на структуру, либо nil

Никита
30.09.2018
14:24:27
Можно вернуть nil

anatolii
30.09.2018
14:24:59
получается nil подходит под interface{}?

Никита
30.09.2018
14:25:33
nil подходит под любой интерфейс

anatolii
30.09.2018
14:25:55
благодарю

V
30.09.2018
14:52:17

Vladimir
30.09.2018
14:55:20

Google

V
30.09.2018
14:55:47
Я не думаю, я обычно проверяю
Но если это инт внутри цикла, то будет скорее всего переиспользована пямять

Vladimir
30.09.2018
14:57:08

V
30.09.2018
14:57:16
Benchmem и pprof в помощь

Pavel
30.09.2018
14:57:22
Зависит от того что с этой переменной делают, да она может быть в стеке один раз и туда будет записываться новое значение каждую итерацию.

V
30.09.2018
14:57:46
^это вот
Компилятор в большинстве случаев гораздо умнее программиста

Admin
ERROR: S client not available

Vladimir
30.09.2018
14:59:36
Да а потом появляются статьи о повторном использовании переменых! Везет вам у вас все компилятор делает!

V
30.09.2018
15:01:47
Вы предполагаете поведение не зная как отработает компилятор на самом деле, что плохо. Так ещё и другим рассказываете свои предположения.

Pavel
30.09.2018
15:02:29
Ага и пример прям не полный я б сказал.
Сильно зависит от того что в цикле и вы воду пытаетесь обсуждать.

Vladimir
30.09.2018
15:04:31

V
30.09.2018
15:04:55
Ускоряли без профилирования видимо?

Vladimir
30.09.2018
15:05:50
ну там все просто уложись в секунду .... а уж с профилированием или нет ( я писал свой бенч) не важно

V
30.09.2018
15:06:17
Т.е. вы по своему частному случаю сделали обобщение ?

Vladimir
30.09.2018
15:06:52
теорию затачивает практика!

V
30.09.2018
15:08:43
Конкретно в этом случае ваше обобщение неверно.

Vladimir
30.09.2018
15:09:40

V
30.09.2018
15:11:09
Вступил в обсуждение, где вы говорили неверные вещи. Можете не читать.

Google

Vladimir
30.09.2018
16:24:26
Сильно зависит от того что в цикле и вы воду пытаетесь обсуждать.
скоре общий стиль , чтоб потом увидев кашмар в pprof не испралять именно эти алокации!! Да на простеших задачах без рекурсий вроде компилятор справляется, но когда програмеры молотят по 400кило в месяц , хотелось бы чтоб молотьба была наиболее успешной , а обьяснять почему компилятор не положил на стек переменную которая уйдет в рекурсию параметром я уже устал

Pavel
30.09.2018
16:33:03

Александр
30.09.2018
16:34:47
шото мало
это меньше запроса раз в три секунды

Crypt
30.09.2018
16:35:42
строк наверное

Александр
30.09.2018
16:36:50
да и строк... копейки

V
30.09.2018
16:45:59
А потом вы этот код из цикла захотите вынести в функцию и начнёте передавать туда эту переменную...
Хорошее правило наоборот максимально сужать область видимости переменной

Аркадий
30.09.2018
17:21:55
Ребята, подскажите пожалуйста, при работе с gorm, как правильно делать, если мне на клиентский запрос нужно отдать инфу из базы, мне для каждого пользователя открывать коннект, доставать данные и закрывать его или какие-то другие еще есть варианты?

Crypt
30.09.2018
17:23:15

Аркадий
30.09.2018
17:23:38

Crypt
30.09.2018
17:24:21
со sqlite такое не прокатит

Аркадий
30.09.2018
17:24:30
типо для постгреса создастся пул?

Crypt
30.09.2018
17:25:25
да, вот этот db создаётся один раз на всё время жизни программы. внутряках либы обычно уже реализован пул соединений

Аркадий
30.09.2018
17:25:41
понял, спасибо

Artem
30.09.2018
19:16:34
понял, спасибо
в main один раз делаешь db, err := gorm.Open(), потом везде таскаешь этот db и обращаешься к нему. ни локов, мютексов и другой фигни не нужно, он справится

Аркадий
30.09.2018
19:18:56