anhckie
я вот такое решение и сделал. но не знаю, насколько это ок или то у меня крышу порвало и я нахимичил что-то не так))
anhckie
а то много опыта с гоу нету, лучше переспрошу
Илья
https://github.com/illiafox/balance-api/tree/master/app%2Finternal%2Fdomain%2Fservice вряд-ли лучший вариант, но я делал так
anhckie
решил так сделать
anhckie
единственное, что жаль за директории-пустышки, но вроде норм?
anhckie
минус поставили, а не объяснили ничего (
Andrey
минус поставили, а не объяснили ничего (
Тебе никто не скажет как "правильно". Тут все упирается в вкусовщину
iostream
как импортировать пакет локально? сам он лежит в /service/app/logging.go main в /service/main.go
iostream
go mod init app ?
iostream
все рано ругается далее
Тимофей
нет
Тимофей
go mod init service
Тимофей
и import service/app/logging
iostream
вроде ругается все равно
iostream
еще я забыл как проект создавать чтоб go.sum был
iostream
и конфигурацию для запуска отладки
iostream
окей
Тимофей
он появляется, когда пакеты гетаешь
iostream
ругается
Тимофей
что в go.mod?
iostream
package service/app/logging is not in GOROOT
iostream
module service go 1.18
Тимофей
что в go.mod?
первая строчка
iostream
module service
Тимофей
а где го мод лежит?
iostream
/service/go.mod
Тимофей
пакет называется app
Тимофей
service/app
iostream
а как теперь использовать logging.PrepareDatabaseFilePath
Тимофей
app.PrepareDatabaseFilePath
Тимофей
название файла не решает
Тимофей
пакет это вся папка
Тимофей
package app в logging.go должно быть
iostream
package app в logging.go должно быть
у меня там package logging
iostream
можно как то этот логгинг вытащить не переименовывая?
Тимофей
можно его в папку logging засунуть
Тимофей
создать папку в папке app
ортем
в Го есть функция map или что-то в этом роде?
Andrey
есть тип map
ортем
чтобы как-то это написать без фора var cardsIDs string for _, card := range pack.Cards { cardsIDs += card.Name + ", " }
Andrey
а чем у тебя является это? pack.Cards
ортем
типо cardIDs = ', '.join(card.Name for name in pack.Cards)
ортем
а чем у тебя является это? pack.Cards
эррей страктов с полем Name, которые нужно сджоинить
Andrey
посмотри про функцию strings.Join
ортем
посмотри про функцию strings.Join
а она работает с эрреем не-стрингов?
Andrey
нет
ортем
в этом и загвоздка, что мне нужно ей скормить массив значений card.Name для каждого card из cards
ортем
если только фором, то ок
Andrey
ну тогда простое складывание строк в strings Builder или bytes BUffer
Andrey
а ты думаешь Join под капотом не через фор ходит?)
ортем
а ты думаешь Join под капотом не через фор ходит?)
не не, я имел ввиду чтобы ручками не делать, а может есть более элегантные методы
Илья
https://go.dev/play/p/WkgjdqpGIYI можно вот так)
ортем
оверкилл немного, хех
Илья
ну возьми как сказал Андрей strings.Join
ортем
в этом и загвоздка, что мне нужно ей скормить массив значений card.Name для каждого card из cards
🅞leksiy
не не, я имел ввиду чтобы ручками не делать, а может есть более элегантные методы
Сделай ручками, вынеси в функцию и забудь. Это го, здесь обработка вручную в цикле - норма.
Тимофей
мне кажется или cin и cout из плюсов очень похожи на каналы в го?
Vladislav
ничо общего
Юра (Юрий Александрович)
Тимофей
ну просто этот синтаксис со стрелочками
Юра (Юрий Александрович)
В плюсах есть даже такая стрелочка ->, она еще больше похожа на каналы в го, и имеет к ним еще меньшее отношение.
Vladislav
в си даже есть
Vladislav
эта самая стрелочка
Vladislav
если мы говорим про поле через указатель на структуру
Тимофей
я к тому, что мы также стрелочкой в cout пишем в него, а стрелочкой из cin читаем из него
aaalitvinov
Всем доброй ночи, какие есть варианты прочитать из stdin данные построчно размером 3.7 мб ? Очень долго происходит, что только не перепробовал ... // Why very long reads? 5 seconds = 3.7Mb stdinReader := bufio.NewReaderSize(os.Stdin, 1024*4000) countsString, _ := stdinReader.ReadString('\n') countsString = strings.TrimSpace(countsString) countSets := toInt(countsString)
aaalitvinov
https://gist.github.com/aaalitvinov/7e18de08d3bfbd1a5e0bba9031ceb947
Dmitry
ну тут цикл в цикле
Dmitry
еще запись в map идет. там не определен размер, поэтому map растет в геометрической прогрессии с последующей пересадкой (эвакуацией) данных в новый блок памяти
Dmitry
да еще и map из слайсов
Dmitry
на 29 строке куча аллокаций
Dmitry
я ошибся. не на 29 строчке куча аллокаций, а в месте вызова stdinReader.ReadString
Dmitry
результаты профилирования
Dmitry
Dmitry
лучше использовать bufio.NewScanner для этой задачи и буфер поменьше указать (например 4 кб)