Задача 1
Написать простую библиотеку in-memory cache
- Нужно написать простую библиотеку in-memory cache.
- Для простоты считаем, что у нас бесконечная память и нам не нужно задумываться об удалении ключей из него.
- Реализация должна удовлетворять интерфейсу:
type Cache interface {
Set(k, v string)
Get(k string) (v string, ok bool)
}Ответ
type Partition struct {
data map[string]string
m sync.RWMutex
}
type Cache struct {
partitions []*Partition
}
func (c *Cache) Set(k, v string) {
partitionIndex := c.getPartitionIndex(k)
partition := c.partitions[partitionIndex]
partition.m.Lock()
defer partition.m.Unlock()
partition.data[k] = v
}
func (c *Cache) Get(k…