ну например в рантайме они уже есть
а еще некоторые задачки не решаются без него, например LRU cache
то что они есть это понятно, но зачем?
это не ответ на вопрос зачем
вы пропустили сообщение про LRU cache это раз. также почитайте в принципе про разницу массива и связного списка. разница в том, что связный список - это динамичная структура, у которой нет предела и преаллоцированного пространства. соответственно в кейсах с неопределенным числом данных, такие как ссылки на участки памяти, которые Го использует для аллокации, проще иметь дело со списками, чем с массивами
как это всё отвечает на вопрос "зачем горутины в голанге"?
А как часто приходилось иметь дело с двусвязными списками? И как часто надо было их переворачивать?
каждый раз на собеседовании
утро начиналось с кофе и двусвязаного списка
простой пример - большие числа, которые не влезают даже в int64. это скорее всего односвязный список. переворачивать двусвязный список не надо. про двусвязный список скажу в третий раз - LRU cache без него не делается.
если речь про "вообще" - ну бдеревья ж, или речь про собственную имплементацию в яп?
Конечно, делается. Более того, связный список очень, очень плохая структура для любого современного процессора
а какая есть альтернатива для представления больших деревьев?
в гошке тоже в слайсах нет предела *ту-ду-дуц*
к примеру наивный цикл поиска самого старого элемента при вставке, O(n) за экономию памяти
Кеш с ключами со сложностью O(n) как в слайсе? мапа + список даст O(1) по получению элемента из кеша будет существенный проигрыш по скорости на больших объемах.
еще проблема - LRU обычно лимитирован. Удаление элемента из слайса - это еще O(n)
Обсуждают сегодня