Влад
«Зависит от задач». Какая конкретно бд, какая нагрузка, какой тюнинг нужен, какое облако (если используется)
R_R
ребят, помогите пж, что то туплю как сделать так, чтобы папки отображались в древовидном виде, а не как справа через \ что то не могу найти это настройках
Alexander
оно так делает, когда в папке одна папка
Alexander
тебе прям надо чтобы оно так не делало или устроит ответ?
R_R
тебе прям надо чтобы оно так не делало или устроит ответ?
чтобы прям так не делало, если это возможно
Alexander
https://stackoverflow.com/questions/53726587/is-there-a-way-to-flatten-or-merge-single-folder-folders-in-vs-code-explorer
R_R
Спасибо!
Alexander
Папка indus вдохновляет)
R_R
видосы топовые у него)
Алексей
Ребята, что за конструкция? func (x MetricType) String() string { return proto.EnumName(MetricType_name, int32(x)) }
Алексей
Что означает взятое в скобки после слова func?
Anonymous
имя ф-ции
Anonymous
а, после
Anonymous
это указатель на структуру
Anonymous
ресивер
Bagasl
Что означает взятое в скобки после слова func?
Это же самые азы го. Выше тебе ответили, ресивер метода. Гугли
Bagasl
Там по значению ресивер
Anonymous
я к тому что в его примере скорее всего это указатель на структуру
Алексей
Спасибо огромное, Друзья! Очень помогли!
🅞leksiy
Anonymous
душнилы момент
Anonymous
ладно
Nick
Ресивер в смысле принимает ретурн?
Maks
func (x MetricType) String() string { return proto.EnumName(MetricType_name, int32(x)) } func -> обозначает что объявляется функция или метод (x MetricType) или (x *MetricType) -> обозначает что этот метод будет у структуры конкретного типа или у указателя на него String() -> название метода и аргументы string -> возвращаемый тип
Алексей
А смысл ресивера? Куда копируем? Неужели нельзя обойтись простым ретурн? )
Алексей
А. Врубился. Я почему-то думал наоборот. Это в функцию данные залетают копированием или указателем.
Алексей
Ресивер указатель я понимаю для чего, но для чего ресивер по значению?
Bagasl
Ресивер указатель я понимаю для чего, но для чего ресивер по значению?
Допустим у тебя есть структура: type item struct { price, quantity int } Тебе нужен метод получения полной цены. func (i item) Total() int { return i.price * i.quantity }
Bagasl
В таком методе указатель вообще не нужен
Bagasl
Либо твой пример, где мы просто "рендерим" структуру в строку
Алексей
Допустим у тебя есть структура: type item struct { price, quantity int } Тебе нужен метод получения полной цены. func (i item) Total() int { return i.price * i.quantity }
Что мешает сделать так: func Total(i item) int { return i.price*i.quantity } ? Не могу смысла уловить. По указателю я понял, вроде, смысл
Bagasl
Что мешает сделать так: func Total(i item) int { return i.price*i.quantity } ? Не могу смысла уловить. По указателю я понял, вроде, смысл
Ничего, это для удобства. Я тебе больше скажу - когда код компилируется все эти ресиверы к такому виду и приводятся
Bagasl
Ну и ещё для работы duck typing'a с интерфейсами
Bagasl
Это же очень круто выглядит и читается
Bagasl
pointer добавляется, чтобы можно было менять первоначальные данные?
Не понял вопроса. Если имеется ввиду pointer ресивер в методе - то да. Но ещё имеет смысл использовать ресиверы по указателю если у тебя огромная структура
Anonymous
да имел ввиду поинтер ресивер) а можно поподробнее про второй случай? почему именно при огромных структурах?
Anonymous
чтобы из за копирования память не засорялся?
Bagasl
чтобы из за копирования память не засорялся?
Она не засоряется, просто копирование замедляет вызов метода
Bagasl
Но вообще я за подход такой - делаешь по правилам и чтобы было удобно, не выносишь себе мозги. Начинаешь всякие оптимизации только когда начинаются проблемы с производительностью. Естественно первый вариант не подразумевает написание говнокода. Имеется ввиду не жертвовать скоростью разработки и читаемостью кода в угоду паре процентов производительности
Maks
Что мешает сделать так: func Total(i item) int { return i.price*i.quantity } ? Не могу смысла уловить. По указателю я понял, вроде, смысл
Это позволяет реализовать стиль ооп. Что бы функции были доступны только у определенной структуры, а не у всего пакета
Алексей
Благодарю за объяснения!!!
Maks
Концепцию package пойми просто. У тебя в package может быть много структур, много общих методов. И так дале. А таким образом можно сделать удобнее.
Maks
И более логично
Maks
организованно
Alexander
Скорее всего у тебя просто какие-то базовые пакеты билдились. Второй раз на цмд пробовал? Но он конечно не нужон, это ваш цмд. И почему он по дефолту идёт..
Valera
Привет. Подскажите пожалуйста как быть. Есть вот такие строки кода и SQL запроса: queryParams += fmt.Sprintf(" p.tag = '%s' ", tag) SELECT ... FROM ... WHERE + queryParams Если tag, например, равен "#tag+5", то запрос почему-то получается такой: SELECT ... FROM ... WHERE p.tag = '#tag 5' То есть из строки теряется знак +. Подскажите пожалуйста в чём дело. Используется GORM.
Alexander
используй плейсхолдеры
Valera
Я в курсе про инъекцию
Valera
используй плейсхолдеры
К сожалению через плейсхолдер тоже вырезает знак "+"
Valera
Ага, пасибо. Уже подобное накопал. Но почему оно так работает?
Valera
Или бог его знает, как там эта GORM работает...
Valera
сработало через %23tag%2B5
Valera
Типа GORM если видит в запросе тильду начинает думать что это URL... хз
Eugene
Привет. Хочу из env получать настройки. Нашёл пакет godotenv. Хочу все данные сохранить в структуру но не пойму как. Может есть какие-то пакеты лучше?
🅞leksiy
Что мешает сделать так: func Total(i item) int { return i.price*i.quantity } ? Не могу смысла уловить. По указателю я понял, вроде, смысл
Если дальше учить, то там еще интерфейсы будут, которые используют методы для утиной типизации и много чего еще интересного.
Alexander
Привет. Хочу из env получать настройки. Нашёл пакет godotenv. Хочу все данные сохранить в структуру но не пойму как. Может есть какие-то пакеты лучше?
в json сериализуй и десериализуй. вообще не уверен, что стоит сохранять данные в переменные окружения
Vitaly
кто-нибудь пробовал писать android-игры на go ? )
Maks
по этому поводу: в проде не должно быть .env файла. Переменные передаются либо в операционную систему через установку енвов в окружении, оттуда уже берет программа эти данные. Это вроде как стандартный подход.
Maks
os.Getenv("variable")
Andrey
viper
Вайпер вроде не умеет доставать, нужен enviper, если сразу в структуру через тэги считывать
Bagasl
viper.SetConfigFile(path) if err := viper.ReadInConfig(); err != nil { return err } viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) viper.SetEnvPrefix(your_project) viper.AutomaticEnv() if err := viper.Unmarshal(&cfgStruct); err != nil { return err }
Bagasl
что-то типо того было
Bagasl
к примеру у нас есть структура: type DB struct { Creds struct { Pass string } } your_project == KEK прописываем переменную окружения с названием KEK_DB_CREDS_PASS и её значение будет в поле Pass у структуры после выполнения кода из сообщения выше
Maks
Для тех кто в nginx не шарит нашел довольно годную серию коротких роликов
Maks
https://www.youtube.com/watch?v=dHsv8EnhSgQ&list=PLhgRAQ8BwWFa7ulOkX0qi5UfVizGD_-Rc&index=1
Maks
там есть темы которые можно скипнуть