Tony
Мне надо всего лишь узнать наличие папки или файла на диске (windows) Делаю так: func pathExists(path string) bool { _, err := os.Stat(path) if os.IsNotExist(err) { return false } else { return true } } Неужели нет какой-нибудь функции типа FileExists(<Path>) ?
Evgeny
знаю лайфхак как записать это в одну строчку ))) if os.IsNotExist(err) { return false } else { return true }
Tony
Что-то особого отличия не заметил
Tony
Еще не могу понять архивирование:
wagner
Что-то особого отличия не заметил
ну значит нет сделайте свою функцию делов то
Tony
func zipit(source, target string) error { logf("СТАРТ: Запаковка " + source + " в " + target) //Это я так понимаю создается файл в памяти zipfile, err := os.Create(target) if err != nil { return err } defer zipfile.Close() //Это объект "класса" архиватора archive := zip.NewWriter(zipfile) defer archive.Close() //Это проверка на наличие источника для запаковки info, err := os.Stat(source) if err != nil { return nil } //Это проверка является ли объект источника папкой var baseDir string if info.IsDir() { baseDir = filepath.Base(source) } //А ЧТО ТУТ ПРОИСХОДИТ - ВООБЩЕ непонятно filepath.Walk(source, func(path string, info os.FileInfo, err error) error { if err != nil { return err } header, err := zip.FileInfoHeader(info) if err != nil { return err } if baseDir != "" { header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) } if info.IsDir() { header.Name += "/" } else { header.Method = zip.Deflate } writer, err := archive.CreateHeader(header) if err != nil { return err } if info.IsDir() { return nil } file, err := os.Open(path) if err != nil { return err } defer file.Close() _, err = io.Copy(writer, file) return err })
Tony
_, err = io.Copy(writer, file) - Это что-то типа содержимое файла копируется в writer?
Tony
непонятно, где задействуется анонимная ф-ция: func(path string, info os.FileInfo, err error) error { if err != nil { return err }
Tony
И почему if info.IsDir() { return nil } Т.е., если папка выйти? А как тогда запаковка папки происходит? А она происходит :)
Tony
pastebin.org
😕 форматирование исходников?
😕 форматирование исходников?
У тебя большая портянка кода, и в формате сообщений ТГ это тяжело читать, а если сделаешь пасту - это поможет быстрее решить твою проблему, плюс удобнее переключатся между чатом и кодом
Tony
Понял
Если у тебя портянка больше 15-20 строк, то лучше сделать пасту, так всем будет проще
Ну и если уж решил код кинуть сообщением, то оберни его в ‘
func(path string, info os.FileInfo, err error) error { if err != nil { return err } И func(path string, info os.FileInfo, err error) error { if err != nil { return err }
Tony
OK
Tony
https://pastebin.com/MpDL731b
Tony
😁 Вроде получилось
Tony
Короче, буду разбираться
Tony
Рекурсией?
Tony
понятно. спасибо )
Денис
Приветствую, посоветуйте наилучшую площадку курсов по Go, Java и т.п. с гарантией трудоустройства и хорошей программой обучения, и хорошими преподами
Yura
Добрый день господа, вопрос: есть ли какие-нибудь ресурсы/материалы по внутреннему устройству го? Чтобы чуть углубить знания
Yura
Побольше про то как устроен гк, планировщик
Денис
Так почему сложнее на Go устроиться?
Yura
Хорошо, спасибочки
Dmitry
На джаве банально есть куча легаси куда можно залететь за опытом и которое как-то надо поддерживать
Dmitry
Сложные проекты можно писать на чем угодно и пишут их так же на чем-угодно, если оно эффективно решает задачу)
Dmitry
И сложную бизнес логику я бы лучше на джавке-котлине писал tbh
Dmitry
хотя опять же, кому что
Null
Всем привет Есть слайс типа интерфес внутри которого лежат json-ы вот один из них {"4194":"by-dev-jenkins","4197":16384,"4198":"vm-1002","4199":"POWERED_ON","4200":4} Как разобрать его без использования структуры и получить на выходе значения ?? аля кей-велью 4194 by-dev-jenkins 4197 16384 4198 vm-1002 4199 POWERED_ON 4200 4 Буду благодарен за помощь)
Null
счас попробую)
Andrey
только там string string надо
Andrey
хотя твое не сработает, сюда по его примеру, там и числа, и строки))
Andrey
ну, будем молится что ноги себе парень не прострелит)
Null
ну, будем молится что ноги себе парень не прострелит)
учитывая какой у меня комбайн-фрнакинштейн то я уже не тока без ног))
Andrey
учитывая какой у меня комбайн-фрнакинштейн то я уже не тока без ног))
а чего тогда питон не взял, который не типизированный
Null
а чего тогда питон не взял, который не типизированный
потому что хотел начать с GO т.к изучал джаву пол года а питон как то не зашел
Null
в общем все сложно с выбором языка было
Andrey
но ты же должен понимать, что выбирают язык под задачу, а не задачу под язык)
Null
Приходит лид говорит Надо интеграция одной херни с другой говорит получаешь json с данными от 1го сервиса аля Заббикс парсишь его так чтобы он отправлялся по курлу в CMDB где надо ID поля и значение Задача упала джуну Сис.Админу который знает тока баш и не оценил питон и приисполненный пошел изучать GO пока пилит Да админ это я)
Null
𝙲𝚊𝚝𝚒𝚘𝚗
shitJson💀💀💀
Null
shitJson💀💀💀
это на первое время)
𝙲𝚊𝚝𝚒𝚘𝚗
𝙲𝚊𝚝𝚒𝚘𝚗
в прод
Null
Прошу не шеймить за переменные это все Временно) как и говно код выше)
Null
Null
все гуд) это уже взлетело)
Null
тоесть работает
Null
Null
спасибо))
Null
Могу скинуть код , но готовьтесь что там ад,кровь, кишки и череп, череп.
Alexey
первый язык?
Alexey
а какой(ие) до этого?
Дмитрий
На вкус и цвет
Дмитрий
Мне го больше нрав
𝙲𝚊𝚝𝚒𝚘𝚗
не понял, а что с синтаксисом не так?
Grigorij
ты уже разработчиком работаешь?
Grigorij
вообще
Grigorij
ок, ну да я имел ввиду что опыт есть. чет раст сурово, не? че не джаву какую нидь?
Herman
а что за компания, если не секрет?
Nikhil
- I am running Truncate function on an os.File: err = currentLogFile.Truncate(0) if err != nil { return err } ------------------------------------------------------------------------- - But it returns error along the lines of: truncate C:\\Users\\jenkins.minikube8\\minikube-integration\\.minikube\\logs\\audit.json: Access is denied." -------------------------------------------------------------------------- The currentLogFile was made like: var currentLogFile *os.File f, err := os.OpenFile(lp, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644) currentLogFile := f --------------------------------------------------------------------------- Help needed in understanding why is this happening and how can we deal with it?
Nikhil
do you use error check for "f, err :="?
I check error for: err = currentLogFile.Truncate(0) if err != nil { return err } ---------------------------------------------------------------- Actually I am trying to overwrite the content of currentLogFile or f, so for that I am doing this. If this is not a good way, is there any other way to overwrite the content inside of an os.File.
Aziz
func (p *parser) *parser что означает ?
Nikhil
func (p *parser) *parser что означает ?
Is this for me. If yes, Could you please write it in English.
Aziz
Is this for me. If yes, Could you please write it in English.
ok i will try : what means in there: func (p *parser) this part of code : *parser
Nikhil
I do not use this function... may be not using "currentLogFile := f" and try f.Truncate(0)
Actually, this is not possible in the code base I am working on. We can only make changes through currentLogFile.
Gazimagomed
func (p *parser) *parser что означает ?
функция принимает указатель на структуру парсер и возврашает. ее же
Михаил
Actually, this is not possible in the code base I am working on. We can only make changes through currentLogFile.
when you use "currentLogFile := f " a second link to the file is created. maybe this is causing the error. try use "currentLogFile := &f " but I'm not sure)
Tony
Подскажите, как запустить отладку в VS Code с параметрами к программе? как-будто я выполнил go run main.go "param1"