Нужно написать простую библиотеку in-memory cache.

Ниже пример простой реализации in-memory кэша на Go, соответствующей интерфейсу:

Короткий ответ

Что ответить на собеседовании

Ниже пример простой реализации in-memory кэша на Go, соответствующей интерфейсу:

Подробный разбор

Ответ с пояснениями

Условие

Нужно написать простую библиотеку in-memory cache.

type Cache interface { Set(k, v string) Get(k string) (v string, ok bool) }

Ответ

Ниже пример простой реализации in-memory кэша на Go, соответствующей интерфейсу:

type Cache interface {
    Set(k, v string)
    Get(k string) (v string, ok bool)
}

type SimpleCache struct {
    data map[string]string
    mu   sync.RWMutex
}

func NewSimpleCache() *SimpleCache {
    return &SimpleCache{
        data: make(map[string]string),
    }
}

func (c *SimpleCache) Set(k, v string) {
    c.mu.Lock()
    defer c.mu.Unlock()
    c.data[k] = v
}

func (c *SimpleCache) Get(k string) (string, bool) {
    c.mu.RLock()
    defer c.mu.RUnlock()
    v, ok := c.data[k]
    return v, ok
}

Здесь используется мьютекс для потокобезопасного доступа к карте. Такой кэш хранит данные в памяти до перезапуска приложения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее