🏁Александр
то в импорте пишешь localproject/myLib
Stepan
$GOPATH/localproject например
Крч мне нужно в GOPATH обязательно добавить папку проекта?
🏁Александр
да
Stepan
Понял
Stepan
Спасибо
Stepan
Не понимаю, у меня два файла package main и один не видит функции другого, хотя они в одной директории
Илья
Крч сходил в вайлдбериз и очень сильный осадок остался
чет судя по вопросам вашим, не зря он остался
Stepan
чет судя по вопросам вашим, не зря он остался
Я даже спорить не буду что с структурой проекта у меня провал
Zver
Крч мне нужно в GOPATH обязательно добавить папку проекта?
Вообще не обязательно. Если разместить вне, то тогда работают относительные пути, а внутри gopath только абсолютные.
Stepan
Потому что практического опыта опять же мало
Илья
что значит не видит, вы go run main.go запускаете? один из частых вопросов в этом чатике
Stepan
А блин
Stepan
Facepalm 🤦‍♂️
Илья
ю ар велкам!
Aliaksandr
Попробую ещё раз повторить вопрос) Как можно быстрее чем 2 вложенных цикла сравнить поэлементно 2 отсортированных спайса?
https://play.golang.org/p/RqSu62EzOWy - самый простой способ. Три последовательных цикла находят совпадающие элементы в двух слайсах, которые не обязательно должны быть отсортированы. Есть способ посложнее и побыстрее для отсортированных слайсов - https://en.wikipedia.org/wiki/Merge_algorithm#Merging_two_lists . Реализацию на го сделаете сами )
Stepan
Я пока оставил луп в лупе по отсортированным
Aliaksandr
луп в лупе может тормозить, если в массивах много элементов. Вариант с мэпой будет быстрее
Vladimir
Я пока оставил луп в лупе по отсортированным
Предложенный выше вариант с проходами по насортированным спискам и мапой гораздо эффективней чем цикл в цикле (у вас же О(n^2)), лучше используйте предложенный вариант
Stepan
Сейчас тогда перепишу
Мерль
Большие?!
Ну, ладно, не большие, если мало ступеней вычислений
Алексей
РадиоТ кто нить слушает?
Dmitry
РадиоТ кто нить слушает?
Есть даже такие, кто участвует в технической реализации сервиса :)
Алексей
https://play.golang.org/p/PuqqLV_QlDV Бобук утверждает, что у него подобный код работает. Вопрос как?
Алексей
Т.е. есть случай, когда перенос { после условия ломает программу
Алексей
Дык вспомнить не смог конкретно
Aleksandr
о том и речь
Алексей
If в go без {} нет?
Aleksandr
не знаю. ты же программируешь на go
Slava
https://github.com/browsh-org/browsh
Anonymous
Всем привет! Есть вопрос по пакету telegram-bot-api к кому можно постучаться с вопросом, чтобы не флудить тут?)
🏁Александр
пиши тут
Anonymous
в общем вопрос более логический когда бот получает первое сообщение от пользователя if update.Message != nil { slice := getSliceInfo() } в слайс складывается набор данных в этом же блоке я беру первый элемент слайса и отправляю его в функцию которая вовзращает результат на вывод юзеру result := someFunc(slice[0]) msg := tgbotapi.NewMessage(chatID, result) bot.Send(msg) но так как элементов в slice может быть больше одного я хочу сделать одну inline кнопку которая будет по нажатию юзера обрабатывать последующие элементы slice как создать кнопку я понял событие от нее ловить через inlineCallBackQuey? а вот в целом пока общую логику удобную обхода слайса с учетом inline кнопки не могу собрать воедино как то так
Vladimir
Кстати, есть еще yanzay/tbot. Там роутинг на хендлерах как в пакете http. На мой взгляд, api поприятнее, чем в telegram-bot-api. Но это так, для информации.
Nazar
мб кто нить сталкивался, есть для го библиотека для того что работать с метапакеты в mpegts (типа пиды, пес, и т.д.)?
Nazar
что бы убирать метаданные и самому писать которые нужно
Джамиль
Всем привет, тут кто-то писал, что tickers текут
Daniel
А?!
Илья
я думаю, коллега имеет ввиду don't forget to stop ticker, unless you need a leaked channel ticker := time.NewTicker(1 * time.Second) defer ticker.Stop()
Антон
Ах, если бы только можно было сделать язык, в котором таймеры останавливаются автоматически. Но это только мечты...
Джамиль
через что лучше сделать бесконечны цикл?
Илья
а какие есть варианты?
Илья
у кого то собеседование чтоли?
Джамиль
))
Джамиль
ticker := time.NewTicker(time.Minute) go func() { for range ticker.C { getData() } }() time.Sleep(time.Hour * 24 * 365 * 10) ticker.Stop()
Джамиль
это в лоб
Джамиль
с паузой делать?
Джамиль
мне нужно каждую минуту запускать
Stepan
мне нужно каждую минуту запускать
Ну так сделай таймслип в цикле
Илья
loop
вы не в тот чат пишете
Джамиль
Ну так сделай таймслип в цикле
но он будет спать после выполнения задач
Джамиль
Ну так сделай таймслип в цикле
а нужно чтобы каждую минуту
Антон
вы не в тот чат пишете
А, точно. Вечно промахиваюсь
Андрей
Всем привет, почему не могу получить данные из post запроса? Пробовал и со стандартной библиотекой и с gin, запрос есть, а данных нет :(
Илья
привет, что значит не могу, а давай через не могу, пример кода
.
Ну без конкретики не помогут
.
Нужен сам запрос и то как ты его обрабатываешь
Daniel
а нужно чтобы каждую минуту
Ну так тикер и есть
Джамиль
Ну так тикер и есть
ticker := time.NewTicker(time.Minute) go func() { for range ticker.C { getData() } }() time.Sleep(time.Hour * 24 * 365 * 10) ticker.Stop()
Джамиль
Ну так тикер и есть
такая штука норм?
Джамиль
Ну так тикер и есть
или же через каналы такое реализуется?
Aleksandr
А чем каналы тебе помогут?
Андрей
Нужен сам запрос и то как ты его обрабатываешь
Все разобрался, это что то не так с расширением rested client, из него отправлял запросы, поставил postman и все норм
Андрей
Кстати, кто нибудь юзает фреймворки или только стандартную библиотеку?
heavycharged
кто нибудь точно юзает.
Zarif
Кстати, кто нибудь юзает фреймворки или только стандартную библиотеку?
для http? мы в проде юзаем gin. простой и удобный, много чего есть, но при этом не перегруженный
Zarif
А есть ли сравнение в скорости с gin и без него?
можете у них на сайте посмотреть, вроде какие-то бенчи есть https://gin-gonic.github.io/gin/ но от себя скажу, он не является самым быстрым, потому как прежде его выбрали, ещё пробовали и другие, и там вроде были и быстрее. тут обычно так - либо фрейморк слишком перегруженный с кучей фич, где сложно кастомизировать и вкурить как тут всё устроенно, либо фрейморк совсем аскентичный, где потратите кучу времени на изобратения половины того что вам нужно. нам понравился gin потому что он вроде как простой и в то же время есть всё для жизни. особенно удобно любителям express.js подобных фреймворков, у них есть общие моменты
Viktor
ticker := time.NewTicker(time.Minute) go func() { for range ticker.C { getData() } }() time.Sleep(time.Hour * 24 * 365 * 10) ticker.Stop()
Недавно наступил на эти грабли: после ticker.Stop() канал ticker.C не закрывается - от того из цикла for range ticker.C не происходит выхода.