Илья
Вопрос: DI-контейнер уместен в go-приложение?
а как вы хотите его использовать?
Herman
Вопрос: DI-контейнер уместен в go-приложение?
ага, но выглядеть будет так себе
John
а как вы хотите его использовать?
да суть в том что я смотрю на DI-контейнер в проекте и не отпускает некое ощущение колхозности. сейчас в DI репозитории всякие, логер, подключения, но как-то оверхедно
John
вот и задался вопросом: на практике в go di-container уместен, часто ли в нем есть необходимость
Илья
DI контейнер в плане внедрение зависимостей?
John
просто сейчас добавилась "магия" и читаемость ухудшилась, но зато главный файл стал чище. Если провоодить аналогию, то весь бардак в квартире смели в одну комнату, где полный треш и угар
Илья
да
через библиотеку убера?
John
fx?
Илья
dig. или вы про type ... struct { Logger Connection .... }
Pavel
Ребят, всем привет, подскажите пожалуйста, есть метод, который принимает интерфейс, как мне сделать тайпхинтинг начальной структуры который передал в этот метод?
Pavel
т.е. вместо jobs.TestJob должен быть тип начальной структуры
Тимофей
func worker[T через | типы](ch <-chan interfaces.JobInterface){ }
Тимофей
ай не дописал
Тимофей
короче при использовании функции прокидываешь в нее тип
Тимофей
а кастуешь в T
Тимофей
думаю заробит
Pavel
Тимофей
switch type
Pavel
switch type
Понял, через дженерики)))
Тимофей
может я не знаю секретного способа
Тимофей
думаю заробит
проверил, работает
Pavel
проверил, работает
Да, работает, спасибо)
జ్ఞా
Вопрос в зал - кто работает с растровыми изображениями - какие библиотеки посмотреть в первую очередь ?
జ్ఞా
Кто нибудь работал в Go c какими нибуль аналогами PIL pillow в питоне например с таким подходом ? Спасибо
A
Для чего?
A
А если не через дженерики?
Тогда у меня есть клевая либа в лс
A
Собственно эмуляция генериков под капотом
జ్ఞా
Смотря для чего
ну создать простые например 6 на 6 квадратики генерации и простая компоновка коллажей
A
Imaging
జ్ఞా
Imaging
мерси
A
Кидай )
Что у тебя в job interface?
A
Я сейчас тебе просто покажу 1 раз и все
A
У тебя там Handle() есть?
A
Если есть перешь его как указатель
A
потом
A
Внимание
A
func Call(f any, args ...any) []any { var result []any if f == nil { return result } fn := reflect.ValueOf(f) in := make([]reflect.Value, len(args)) for i := range args { if args[i] == nil { in[i] = reflect.New(fn.Index(i).Type()) continue } in[i] = reflect.ValueOf(args[i]) } out := fn.Call(in) for _, value := range out { result = append(result, value.Interface()) } return result }
A
И вызываешь ее для нужной реализации
A
Вот тут fn := reflect.ValueOf(f) мы уже знаем все о типе
A
вернее методе типа но не суть
Тимофей
а чем плохи дженерики?
Emin Zalaev
а чем плохи дженерики?
Никто их не любит
Erkinov Tolibjon
*
A
Никто их не любит
Кто конкретно?
Denis
Всем привет var newData string data := readFile(pathConsider) id := strings.Fields(data) for i := 1; i < len(id); i++ { fmt.Println(i) newData := newData + id[i] + " " } Ругается на newData в цикле типа неиспользуемая переменная А как правильно записать переменную перебирая цикл?
Emin Zalaev
newData := “” for .. { newData = newData + … }
Aziz
Всем привет
Aziz
у меня как gopath указан путь /home/user_name/go/pkg/mod
Aziz
дальше лежит вот такая иерархия
Aziz
но при получении новых пакетов vs code не видит этих пакетов
Aziz
но он видит те пакеты которые идет из коробки os fmt и так далее
Несин Данила
но он видит те пакеты которые идет из коробки os fmt и так далее
Go mod init делал? А так же проект лежит в ../go/src/project-name ?
Данил
Слушайте, а как range по каналу работает? Меня просто волнует ситуация, когда дойдет до строчки range, а канал будет не полностью заполнен в этот момент, проитерируется, а в этот момент оставшееся значение должно было попасть в канал. И получается оно пропускается? Или в Go есть правило, что пока канал не заполнится полностью, то использовать range нельзя?
Emin Zalaev
Возможно правило
Emin Zalaev
Но я не помню точно
Emin Zalaev
Лучше под капотом глянуть
Илья
выйти из range chan можно только закрыв канал (или вручную)
Сергей
Доброго дня :) Ребят, а никто не сталкивался с проблемами MQTT и bad handshake? Перевожу скрипт подключения к сокету с питончика на го, питочник отрабатывает ок, на го - bad handshake Все один в один сделано. Грешу только на tls_set_context() Но в с ним в го ничего не понятно
Сергей
Или если есть кто матерый, кто поможет решить - отблагодарю материально :)
Сергей
ну сюда писать слишком много текста, жду отклика свободных и горячих
🅞leksiy
На github gist можно побольше текста закинуть
Dilame
GoLand ругается на строчку ioutil.NopCloser(bytes.NewBuffer(body)) Типа NopCloser deprecated. Чем заменить?
🅞leksiy
ioutil вообще весь deprecated
Null
ioutil вообще весь deprecated
Там вызовы из io и os идут теперь
Beta
ioutil вообще весь deprecated
на go.dev пишут что от данного пакета отказались еще с 16 версии и всем советуют писать на os, io
Beta