Смотрел реализацию кэша в инете. Кэш имеет неимпортируемые поля:
type Cache struct {
sync.RWMutex
defaultExpiration time.Duration
cleanupInterval time.Duration
items map[string]Item
}
type Item struct {
Value interface{}
Created time.Time
Expiration int64
}
У структуры Cache есть методы Get и Set. Вызываются они на существующем экземпляре кэша, соответственно, чтобы их использовать мне нужно создать экземпляр структуры с помощью функции New:
func New(defaultExpiration, interval time.Duration) *Cache {
data := make(map[string]Data)
cache := Cache{
items: data,
defaultExpiration: defaultExpiration,
cleanUpInterval: interval,
}
return &cache
}
Если мне нужно будет добавлять в кэш данные из разных пакетов программы, то мне нужно создавать экземпляры в каждом из пакетов? Получится несколько кэшей, а хотелось бы создать один и туда добавлять данные. Как это сделать? На ум приходит только создание глобальной переменной, а я слышал, что это сомнительная практика и лучше её избегать