добавил возможность получить список элементов из кэша

main v2.0.0
serr 2025-01-03 20:31:13 +03:00
parent c319e788e7
commit 8bb4a485c4
1 changed files with 24 additions and 3 deletions

View File

@ -2,11 +2,16 @@ package simplecache
import ( import (
"errors" "errors"
"fmt"
"sync" "sync"
"time" "time"
) )
// Структура виде ключ-значение для возвращения списка элементов кэша с их ключами.
type KeyItemPair struct {
Key string
Item Item
}
// Элемент в кэше - это данные и время их жизни. // Элемент в кэше - это данные и время их жизни.
type Item struct { type Item struct {
destroyTimestamp int64 // Момент в Unix-секундах, когда элемент становится устаревшим destroyTimestamp int64 // Момент в Unix-секундах, когда элемент становится устаревшим
@ -122,11 +127,27 @@ func (c *Cache) Count() int {
} }
// Печать всех элементов кэша (ключ и время уничтожения). // Печать всех элементов кэша (ключ и время уничтожения).
func (c *Cache) Print() { func (c *Cache) List() []KeyItemPair {
c.RLock() c.RLock()
defer c.RUnlock() defer c.RUnlock()
// Создаем срез для хранения пар ключ-значение
items := make([]KeyItemPair, 0, len(c.storage))
// Заполняем срез парами ключ-значение
for key, item := range 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
} }