From 8bb4a485c494c310ace87e1a4fb576584349ef21 Mon Sep 17 00:00:00 2001 From: serr Date: Fri, 3 Jan 2025 20:31:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B8=D1=82=D1=8C=20?= =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20=D1=8D=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20=D0=B8=D0=B7=20=D0=BA=D1=8D?= =?UTF-8?q?=D1=88=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simplecache.go | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/simplecache.go b/simplecache.go index 300a0ca..944ac86 100644 --- a/simplecache.go +++ b/simplecache.go @@ -2,11 +2,16 @@ package simplecache import ( "errors" - "fmt" "sync" "time" ) +// Структура виде ключ-значение для возвращения списка элементов кэша с их ключами. +type KeyItemPair struct { + Key string + Item Item +} + // Элемент в кэше - это данные и время их жизни. type Item struct { destroyTimestamp int64 // Момент в Unix-секундах, когда элемент становится устаревшим @@ -122,11 +127,27 @@ func (c *Cache) Count() int { } // Печать всех элементов кэша (ключ и время уничтожения). -func (c *Cache) Print() { +func (c *Cache) List() []KeyItemPair { c.RLock() defer c.RUnlock() + // Создаем срез для хранения пар ключ-значение + items := make([]KeyItemPair, 0, len(c.storage)) + + // Заполняем срез парами ключ-значение for key, item := range c.storage { - fmt.Printf("Key: %s, DestroyTimestamp: %d\n", key, item.destroyTimestamp) + items = append(items, KeyItemPair{Key: key, Item: item}) } + + return items +} + +// Возвращает данные элемента кэша. +func (i *Item) Data() interface{} { + return i.data +} + +// Возвращает момент смерти элемента кэша. +func (i *Item) DestroyTimestamp() int64 { + return i.destroyTimestamp }