Илья
Herman
John
а как вы хотите его использовать?
да суть в том что я смотрю на DI-контейнер в проекте и не отпускает некое ощущение колхозности.
сейчас в DI репозитории всякие, логер, подключения, но как-то оверхедно
John
вот и задался вопросом: на практике в go di-container уместен, часто ли в нем есть необходимость
Илья
DI контейнер в плане внедрение зависимостей?
John
John
просто сейчас добавилась "магия" и читаемость ухудшилась, но зато главный файл стал чище. Если провоодить аналогию, то весь бардак в квартире смели в одну комнату, где полный треш и угар
Илья
да
через библиотеку убера?
John
fx?
Илья
dig.
или вы про
type ... struct {
Logger
Connection
....
}
Pavel
Ребят, всем привет, подскажите пожалуйста, есть метод, который принимает интерфейс, как мне сделать тайпхинтинг начальной структуры который передал в этот метод?
Pavel
т.е. вместо jobs.TestJob должен быть тип начальной структуры
Тимофей
func worker[T через | типы](ch <-chan interfaces.JobInterface){
}
Тимофей
ай не дописал
Тимофей
короче при использовании функции прокидываешь в нее тип
Тимофей
а кастуешь в T
Тимофей
думаю заробит
Pavel
Тимофей
Тимофей
switch type
Тимофей
может я не знаю секретного способа
జ్ఞా
Вопрос в зал - кто работает с растровыми изображениями - какие библиотеки посмотреть в первую очередь ?
జ్ఞా
Кто нибудь работал в Go c какими нибуль аналогами PIL pillow в питоне например с таким подходом ? Спасибо
A
A
Для чего?
A
A
Собственно эмуляция генериков под капотом
జ్ఞా
Смотря для чего
ну создать простые например 6 на 6 квадратики генерации и простая компоновка коллажей
A
Imaging
జ్ఞా
Pavel
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
*
Pavel
A
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 + …
}
Alexey
Denis
Aziz
Всем привет
Aziz
у меня как gopath указан путь
/home/user_name/go/pkg/mod
Aziz
дальше лежит вот такая иерархия
Aziz
но при получении новых пакетов vs code не видит этих пакетов
Aziz
но он видит те пакеты которые идет из коробки os fmt и так далее
Данил
Слушайте, а как range по каналу работает?
Меня просто волнует ситуация, когда дойдет до строчки range, а канал будет не полностью заполнен в этот момент, проитерируется, а в этот момент оставшееся значение должно было попасть в канал. И получается оно пропускается? Или в Go есть правило, что пока канал не заполнится полностью, то использовать range нельзя?
Emin Zalaev
Emin Zalaev
Возможно правило
Emin Zalaev
Но я не помню точно
Emin Zalaev
Лучше под капотом глянуть
Илья
Илья
выйти из range chan можно только закрыв канал (или вручную)
🅞leksiy
Слушайте, а как range по каналу работает?
Меня просто волнует ситуация, когда дойдет до строчки range, а канал будет не полностью заполнен в этот момент, проитерируется, а в этот момент оставшееся значение должно было попасть в канал. И получается оно пропускается? Или в Go есть правило, что пока канал не заполнится полностью, то использовать range нельзя?
Очень просто работает, получает значение из канала, если нет - ждет, если канал закрыт - цикл завершается
Сергей
Доброго дня :)
Ребят, а никто не сталкивался с проблемами MQTT и bad handshake?
Перевожу скрипт подключения к сокету с питончика на го, питочник отрабатывает ок, на го - bad handshake
Все один в один сделано. Грешу только на tls_set_context()
Но в с ним в го ничего не понятно
Сергей
Или если есть кто матерый, кто поможет решить - отблагодарю материально :)
🅞leksiy
Сергей
ну сюда писать слишком много текста, жду отклика свободных и горячих
🅞leksiy
На github gist можно побольше текста закинуть
Dilame
GoLand ругается на строчку
ioutil.NopCloser(bytes.NewBuffer(body))
Типа NopCloser deprecated. Чем заменить?
Grigory
🅞leksiy
ioutil вообще весь deprecated
Beta