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 }