Null
⁉️ Как проводить тестирование программ на Go? 📌 Обсудим это на открытом уроке 9 ноября в 20:00, на котором мы: — Рассмотрим процесс тестирования программ на Go; — Поговорим про понятие табличных тестов; — Затронем тему пакета testing и библиотеки testify. 🦾 В результате вы сможете писать юнит-тесты к программам на Go. Также на занятии познакомитесь с преподавателем и программой онлайн-курса "Golang Developer. Professional" от OTUS. 💣 Проходите вступительный тест и регистрируйтесь на открытый урок Реклама. Информация о рекламодателе на сайте www.otus.ru
Null
🔧 Сайт-шпаргалка по языку Go https://devhints.io/go #go #cheatsheet
Null
Roman
добрый день, есть какие-то способы закрыть го рутину? у меня там ws соединение, не могу закрыть
Илья
Добавить канал или контекст для отмены
Vladislav
можно еще завершить main 😆
Roman
Добавить канал или контекст для отмены
можно подробнее об контекст?
Emin Zalaev
можно подробнее об контекст?
у контекста есть канал Done
Emin Zalaev
ctx.Done
Roman
спасибо
Peter
Привет. Подскажите, кто-нибудь решал вопрос boilerplate приложений на Golang? В частности меня интересует вопрос обновления. Например, я запилил шаблонное приложение, команда на базе этого сделала себе сервис, а потом я внес в шаблонное приложение апдейт и хочу, чтобы этот апдейт получила команда.
Илья
Зачастую такие проблемы решаются командным фреймворком, куда летят все аптейды
Peter
В такой фреймворк и всякие middleware для авторизации закидываются?
Peter
Пока, честно, сложно представить это именно как фреймворк.
Илья
В такой фреймворк и всякие middleware для авторизации закидываются?
Из публичных я видел только те, которые упрощают написание кода для запуска сервиса (чтение конфигов, коннекты к бд, ошибки и т.д.), например https://github.com/go-micro/go-micro
Peter
Я недавно в technical radar от Thoughtworks видел тулзу https://cruft.github.io/cruft/, которая решает проблему обновления шаблонных приложений, но пока не видел опыт использования.
Konstantin
Всем привет! Кто-нибудь знает, как работать с форматом даты DD/MM/YYYY ?
Konstantin
Пытаюсь перевести, выдаёт 0001-01-01 00:00:00 +0000 UTC
Konstantin
time.Parse("02/01/2006", data) не подходит?
Он переводит 01 как месяц, а не день
Konstantin
А если time.Parse("21/02/2006", data)
Илья
тогда 02/01/2006
Konstantin
тогда 02/01/2006
Как это работает??
Илья
Илья
Это форматы
Roman
ребят, получаю вот такое предупреждение в функции this return statement may be reached without using the cancel var defined on line 37lostcancel на 37й строке ctx, cancel := context.WithCancel(context.Background()) ctx передаю в функцию func some(ctx){ for { select { case <-ctx.Done(): log.Printf("stopped the search in") return }
Dmitry
есть просто cancel()
этого мало. нужно его в defer еще вызывать, чтобы если в обычном случае нет вызова cancel, был вызов cancel, чтобы освободить ресурсы
Roman
спасибо
Roman
Добавить канал или контекст для отмены
вообщем перепробовал все что в моих силах, может еще что-то придумаю, но го рутину не закрывает, case <- ctx.Done(): и `cancel()` работают, но рутина продолжает работать. Если есть у кого возможно посмотрите пожалуйста, https://pastebin.com/2tJvdfan
Rostislav
ну типа так https://go.dev/play/p/LsRcqTygz0S
Сори за тупой вопрос. Я новенький в го. Но почему здесь нужно юзать дженерик, а не прописать в 27 строке просто func testFunc(i []testInterface) { Не понимаю, в чем проблема привести структуру к интерфейсу без прибегания к дженерику Выглядит как код ради кода Чем такой подход можно объяснить в го
Andrey
часть кода выложил только, может из-за этого?
Я там имел ввиду про содержание твоего кода. И наличие вот таких строк к примеру ещё log.Print("Sent: ", msg.Text)
Илья
testFunc([]testInterface(str)) выдаст ошибку
Rostislav
Если не ошибаюсь, то нельзя преобразовать слайс типа в слайс интерфейса
А вот так дает https://go.dev/play/p/OSrI8wTikLv Какой-то странный полиморфизм
Andrey
А вот так дает https://go.dev/play/p/OSrI8wTikLv Какой-то странный полиморфизм
вопрос века, это полиморфизм или все-таки абстракция?)
Rostislav
🔫
Rostislav
Я ставлю на полиморфизм)
kostyaBro
Эмм причём тут полиморфизм
kostyaBro
А ну с натяжкой
Илья
А чем отличается абстракция от полиморфизма?
kostyaBro
Вообще да, каст массива интерфейсов к строке например, к сожалению не сделать
kostyaBro
Из за того как типы устроены и хранятся даже unsafe мне не помог помню
kostyaBro
Но ты мог заранее сделать именно массив интерфейсов
kostyaBro
Вообще такое.. придумывать задачу из пальца
Rostislav
Я прост пришел с джавы, и там можно сделать метод, который принимает лист (аналог слайса)интерфейсов, а в него можно передать лист с объектами, реализующими этот интерфейс. Приседания с дженериками в го чет не понял
kostyaBro
Я тоже пришёл с java, приятно познакомиться
Кіт ✙
я пришёл с питона, досведания
Кіт ✙
kostyaBro
Илья
Это соль или снег?
kostyaBro
Кіт ✙
это настоящий суслик я был снегом задавайте свои вопросы
kostyaBro
Илья
Это Hyundai
Круто
Evgeny
Я прост пришел с джавы, и там можно сделать метод, который принимает лист (аналог слайса)интерфейсов, а в него можно передать лист с объектами, реализующими этот интерфейс. Приседания с дженериками в го чет не понял
потому что в жаве генерики это разбодяженный синтаксический сахар, не доживающий до рантайма, а в суровых компилируемых языках под каждый случай типизации генерика в программе свой собственный код генерится, отсюда различия и ограничения
Rostislav
А ArrayList generic
Жаль в го такого нет со слайсами
kostyaBro
Жаль в го такого нет со слайсами
Реализуй если прям нужно) И переиспользуй
Rostislav
Реализуй если прям нужно) И переиспользуй
Интересно, а либы готовой нет. Думаю не мне одному в глаз ударило)
Andrey
Интересно, а либы готовой нет. Думаю не мне одному в глаз ударило)
Тут каждую неделю появляется как минимум один человек, который какую-нибудь хрень с другого языка пытается в корячь в Го, потому что "ему не удобно,он не привык"
kostyaBro
Сорян)
Это как придти в java после Haskell и сказать что у вас лямбды не те
kostyaBro
А вообще 5 минут написать если тебе надо
kostyaBro
Но вопрос, тебе действительно надо?
kostyaBro
В том плане, что, ты сейчас пишешь софт и там вот ну очень не хватает именно java's array
Rostislav
Ок, я понял, что в го нужно приходить по принципу «забудь все, что было до»)
Юра (Юрий Александрович)
В чужой язык со своим синтаксисом не ходят.