Вопрос: Как реализовать simple cache with TTL (вариант с cleanup goroutine)?

Go Senior Без компании
Вопрос: Как реализовать simple cache with TTL (вариант с cleanup goroutine)?
Ответы
```go type Cache struct { mu sync.Mutex m map[string]item } type item struct{ v string; exp time.Time } func (c *Cache) cleanupLoop(ctx context.Context) { t := time.NewTicker(time.Minute) defer t.Stop() for { select { case <-ctx.Done(): return case <-t.C: c.mu.Lock() now := time.Now() for k, it := range c.m { if now.After(it.exp) { delete(c.m, k) } } c.mu.Unlock() } } } ``` **Как это работает:** периодическая очистка предотвращает рост map. Для продакшна учитывают нагрузку и время блокировок.