Grigory
мимикрируют
Patamen
Админы @nenuetoflex
Emin Zalaev
не понял
Эволюционировали
Sebor▂▅▇█▓▒░
Та просто чел на два фронта трудится 😏
Не ну это
Админы @nenuetoflex
Шо тебе не нрав вопросы от бегиннеров?
🅞leksiy
Шо тебе не нрав вопросы от бегиннеров?
Этот вопрос был выше, скопирован этим ботом 😅
Sebor▂▅▇█▓▒░
Данил
а контекст это канал?
Vladislav
а контекст это канал?
да, структура, в которой канал, закрытие которого сигнализирует об отмене контекста
Sergey
а контекст это канал?
В контексте есть канал, когда создаешь контекст с возможностью отмены
Vladislav
Расскажит
Vladislav
когда пытаешься рассказывать за голанх, но не освоил школьный курс
Null
Расскажите про структуры данных: stack, queue, linked list, trie, balanced tree, Hash Table Ответ: 8 известных структур данных, о которых спросят на собеседовании #теория #middle @golang_interview
Павлик
Расскажите про структуры данных: stack, queue, linked list, trie, balanced tree, Hash Table Ответ: 8 известных структур данных, о которых спросят на собеседовании #теория #middle @golang_interview
так а реализация их на голанге в стандартных голанг библиотеках есть? А если нету, то может есть примеры как построить trie в го без unsafe?
Павлик
https://www.geeksforgeeks.org/advantages-trie-data-structure/
может я что то не заметил, но где ж там код на го? Или библиотека в которой реализован trie? Кажется там только теория. Я и так его на си писал на лабораторных, хочу готовое
Павлик
а зачем ансейф?
ну мне ж надо дерево растить. Выделять память, ставить указатели на объекты. Освобождать потом, если вдруг удалю слово. Но я на го только начинаю. потому и спрашиваю
Eugene
@nenuetoflex тут девушке за Эни надо бан накидать
Не ну это
Объясните ей уже, что такое any, а что такое дженерики
Eugene
ботоебы хороши
Eugene
творчески подходят
Юра (Юрий Александрович)
Противостояние броня-снаряд
Vladislav
пора уже отменить анонимность в интернете
Vladislav
тогда боты просто не смогут выживать
Юра (Юрий Александрович)
Будут регистрировать ботов на бомжей
Vladislav
её и щас-то уже по сути нет, ты не можешь полностью на анонимность в интернете полагаться
Vladislav
но при таком раскладе остаётся такая вот серая зона
Vladislav
Будут регистрировать ботов на бомжей
ну и пускай, побанят и всё
Vladislav
главное, что при обязательной привязке к личности, эти самые личности - ограниченный ресурс
Юра (Юрий Александрович)
ну и пускай, побанят и всё
Потом на пенсионеров. Потом на крестьян.
Юра (Юрий Александрович)
Потом на ПТУшников
Vladislav
пускай, пускай
Юра (Юрий Александрович)
потом на солдат, потом на рабочих, потом на госслужащих
Юра (Юрий Александрович)
А там уже и новые бомжи появятся. Неисчерпаемый ресурс. И это я еще мигрантов не упомянул в целях толерантности
Eugene
блин, а ведь можно организовать информационное рабство
Eugene
брать людей из африки и регать на них аккаунты
Павлик
ну есть обычные указатели, а не ансейф
возможно я не прав и можно обойтись обычными указателями. Но всё равно в канале Golang в статье про структуры - ожидал увидеть где собственно в гошке эти структуры найти (что то типа STL как в С++) или примеры как сделать, а не голую теорию
anhckie
вроде одно и то же - постоянная отправка сигнала через какое-то время
Юра (Юрий Александрович)
а в чем разница юзать тикер или афтер?)
Тикер - многократно, афтер - однократно
anhckie
но в случае если мы используем селект в бесконечном цикле, то принципиальной разницы нет?
anhckie
``` for { select { case <-ctx.Done(): return case <-time.After(3 * time.Second): fmt.Println("send") ch <- message{time: time.Now(), text: "hello world"} } } ```
Юра (Юрий Александрович)
афтер выдаст сигнал только один раз и все. А тикер будет слать постоянно, пока не сбросишь.
anhckie
ну вот в этом примере афтер отрабатывает не один раз, так как цикл бесконечный и афтер под капотом свой каунтер обнуляет и по итогу все как будто там тикер
Юра (Юрий Александрович)
Может быть афтера сбрасывают. Разница в том, что афтер пока не сбросишь - второй раз не заведется. А тикер и сбрасывать не надо, сам посторяется
Vladislav
лучше юзать тикер. так как он не даёт течи
Vladislav
про утечки афтера сказано в доке
Vladislav
но зато афтером чуть проще пользоваться, для такого одноразового таймаута в селекте из разных каналов
anhckie
я что-то про тикер тоже самое встречаю, мол надо - отдельно вызывайте метод stop, ибо ГК не будет его трогать
Vladislav
ну вот тикер как раз можно явно стопнуть, где-нить в дефере
anhckie
ну, да, типа сам афтер не стопнуть, но можно инстантс таймера сделать timer := time.NewTimer(time.Hour) который уже стопается точно так же
anhckie
короче я все равно не въехал в чем у них особая разница, больше похоже на синтаксический сахар
Grigory
Тикер для операций которые должны быть в одно и то же время запущены
Grigory
Ну точнее с равным интервалом между стартами
Grigory
Афтер ждёт честно заданное время
Grigory
Заметно будет на долгих операциях с малым интервалом ожидания
Илья
Ticker заспавнит одну и будет отправлять
Илья
+ тикер можно остановить или задать другой интервал
anhckie
афтер будет горутины спавнить
горутины или каналы?
Илья
и то и то
Илья
с точки зрения производительности, лучше слать несколько раз в один канал одной горутиной, чем постоянно создавать новые и нагружать сборрщик мусора + шедулер
anhckie
кажись, въехал
anhckie
finally
anhckie
спасибо, гайз )
anhckie
ну, и раз такое дело, хочу спросить. хочу научиться прокидывать настройки интервала с какого-то файла конфигурации, как полагается. какой формат обычно юзается на боевых проетах и какая либа? я слышал что-то про viper
Илья
duration := flag.Duration("interval", time.Second, "send interval") flag.Parse() interval := *duration <-time.After(interval)
Илья
запуск: go run . -interval=5s
Emin Zalaev
Тазашо
Не ну это
Илюха сидит орет с запуска
Emin Zalaev
Поорем с илюхой вместе
Не ну это
Eugene
ок
Null
Я не Кирилл. И вам не советую
Eugene
я не Женя и вам не советую