Anonymous
Только fmt.Print заменяй, т.к. Println новую строку создал, назад не вернуться
🍗
в смысле так ? fmt.Print("Text #1") fmt.Printf("Замена на текст 2")
Dmitrii
fmt.Print("Text #1") fmt.Printf("\rЗамена на текст 2")
🍗
Лайк...))) Расширю вопрос, если строка к примеру "Вас приветствует Дима" и только заменять Диму заменять на Настю, Петю, Васю ?
Dmitrii
func main() { s := []string{"Петя", "Вася", "Катя"} for _, v := range s { fmt.Printf("\rВас приветствует %s", v) time.Sleep(time.Second) } }
🍗
Спасибо, я понял как это делают, предпологал можно что-то типо меток ставить %v таких, и их изменять без циклов.
Serhii
Есть массив структура которая возвращается одной sdk либой, в каждом элементе массива присутствует очень много полей, с каких мне надо только два, как правильно выбрать эти поля и загнать в аналогичную структурку чтоб отобразить потом? Вижу только вариантом перебора через for, но может есть другие пути?
Serhii
И еще вопрос, в мире ноды на проде я держал процесс с помощью pm2, как это правильно делать в мире го?)
Anonymous
Serhii
Не так сказал, как правильно держать скомпиленный бинарник в запущенном состоянии и в случае краша перезапускать
Serhii
Т.е неубиваемый пррцесс
Anonymous
Эээ, ну у меня systemd перезапускает сервисы
Anonymous
А сейчас же мода всё в докер пихать, там хз чо
Serhii
Да я пока не вижу смысла в докер
Daniel
А он есть
Zloy-Dobry
А ответ на твой вопрос, нет. Пм2 пусть отстается в том миру где его сделали.
Zloy-Dobry
Для процсесс менеджмента своего бинаря используй нативные средства своей ос
Serhii
Ok ok)
Serhii
Привычка же
Alexander
https://go-macaron.com/docs/middlewares/binding
Alexander
????
Anatoliy
????
читал, смотрел. но там идет простая функция: m.Post("/", binding.MultipartForm(UploadForm{}), uploadHandler(uf UploadForm) string { у меня же там идет вот такое. handlerStruct := &controller.TokenHandler{ SecretKey: []byte(KEY_SECRET), DBConn: db, } m.Post("/", binding.Json(controller.User{}), handlerStruct.CreateUser) func (h *TokenHandler) CreateUser(c *macaron.Context) { и как отдать кроме контекста в функцию еще и самого пользователя - я пока тупо не понимаю. видимо что-то упускаю(
Alexander
https://github.com/james2doyle/macaron-example/blob/master/main.go
Alexander
там пример есть
Alexander
m.Post("/contact/submit", binding.Bind(ContactForm{}), mySubmitHandler)
Alexander
func mySubmitHandler(ctx *macaron.Context, contact ContactForm) {
Anatoliy
эм.. т.е. вот так просто? func (h *TokenHandler) CreateUser(c *macaron.Context, user User) { ? и не надо ничего дописывать в m.Post("/", binding.Json(controller.User{}), handlerStruct.CreateUser) ?
Anatoliy
Мда... действительно туплю получается(
Alexander
я макароном не пользовался я не знаю)
Alexander
написано, что д
Андрей
доброго времени суток, народ подскажите чтонить интересное библиотечку для console.ui надо под хостинг несколько задач автоматизировать, хотелось бы удобство использования чтоб было
Андрей
а как с интерактивностью?
Андрей
у нее
Андрей
мне надо наклепать текстовую менюшку для быстрого развертывания нескольких конфигов... в виде текстового и списка и интерактивного перехода по нему
Андрей
У себя в закладках нашёл вот это: https://github.com/marcusolsson/tui-go
все, нашел то , что надо тут, спасибо, выручил
Рубикон
Всем вечера
Рубикон
Не подскажите дистрибьютив Линукс, чтобы минимальный и только для запуска golang приложения под 32 бита?
Roman
Alpine
Roman
Я не уверен на счет 32 бит правда
Roman
Есть вроде поддержка 32
Roman
https://alpinelinux.org/downloads/
Рубикон
Таки есть
Vasily
из нюансов alpine - там с -race не сбирается
Vasily
вдруг это тайное знание пригодится
Рубикон
из нюансов alpine - там с -race не сбирается
Это что, и можно ли подробностей?
Vasily
это рейс-детектор, опция при компиляции и тестирования он требует там gcc и ещё какого-то плюсового кода если это не используется - можно забыть
Roman
В общем для прода норм
Рубикон
Благодарю
Anatoliy
Может кто подсказать? У меня есть хендлер, я в нем выполняю некоторые операции и теперь мне надо вернуть ответ. Это может быть как сообщение об ошибке, так и корректный ответ. Но писать везде - не радует. Я бы хотел иметь возможность или отправлять нужные данные через return или вызывать некий метод который бы их принимал. Но ему надо каждый раз отправлять контекст что бы этот самый метод мог отправить сам ответ сервера. Вопрос - как его можно всегда туда отправлять?
Anatoliy
Хочется чего то такого: func (h *TokenHandler) CreateUser(c *macaron.Context, errs binding.Errors, user model.User) (map[string]interface{}, binding.Errors, int) { Write(c, nil, errs, 500) return или просто return nil errs, 500 сам Write вот такой, и ему хочется не отправлять каждый раз напрямую контекст func Write(c *macaron.Context, res map[string]interface{}, errs binding.Errors, port int) { result := Result{ Result: res, Errors: errs, } c.JSON(port, result) } Ну и сама обработка вот такая: m.Post("/", binding.Json(model.User{}), handlerStruct.CreateUser) т.е. либо привести к виду что-то вроде m.Post("/", binding.Json(model.User{}), handlerStruct.CreateUser, controller.Write) и в самом CreateUser просто отправлять данные дальше что бы их мог получить Write, либо вызывать этот Write внутри CreateUser и при этом отправлять данные оттуда. Но - не прописывать каждый раз контекст
Anatoliy
У меня есть подозрение что я где то как-то умудрился запутаться, но как - не понимаю пока(
Anatoliy
Эм.. как?
Anatoliy
хотя вроде понял, щас попробую
Максим
func (c *Context) Write(){}
Максим
хотя вроде понял, щас попробую
Вероятнее всего я не прав. Не помню точно, можно ли расширять сторонний пакет
Anatoliy
судя по всему нельзя, по крайне мере не получается
Anatoliy
ну в общем пока не заработало, буду думать дальше
Максим
Прошу прошения.
Anatoliy
Да ничего страшного, это мне тут впору прощения просить, то по одному вопросу всех дергаю, то по другому. И в итоге опять окажется что что-то я где-то просто пропустил(
Anonymous
Всем привет. Странный вопрос, и не реклама. Возникла идея записать обучающий видеокурс по го для продолжающих. В процессе на примере построения системы автоматизации средней руки магазина рассказывается о паттернах проектирования, тестировании, и других моментах разработки. Будет кому интересно?
Aleksandr
конечно
Andrei 🦉
@Visteras судя по всему никак, куцый синтаксис golang приводит к дикому количеству boilerplate в кодовой базе, официально подобное рекомендуется делать через кодогенерацию
Андрей
Вопросик, а go in action у кого-то есть перевод?
Андрей
или Go in Practice
Irina
хотя мне книга или большой туториал интереснее были бы, чем видеокурс
Chebyrash
хотя мне книга или большой туториал интереснее были бы, чем видеокурс
Кому-то проще смотреть видео. Человеческим языком иногда понятнее, особенно новичкам.
Irina
ну это понятно, просто напоминаю что текстовую версию было бы тоже приятно иметь
Андрей
топ) тремя руками за
аааа мутанта!!!!! ааааа.. рад знакомству.. вообщем
Anatoliy
@Visteras судя по всему никак, куцый синтаксис golang приводит к дикому количеству boilerplate в кодовой базе, официально подобное рекомендуется делать через кодогенерацию
блин, мне всего-то надо просто отправлять данные для отправки пользователю дальше, т.к. в куче мест делать что-то вида ctx.JSON(500, map[string]interface{}{... })как-то вообще не комильфо. Неужели эта проблема так сложно решается?