code: func (c *Cache) Get(key interface{}) (cache.Value, error) {
  	c.mtx.Lock()
  	defer c.mtx.Unlock()
  
  	el, ok := c.cache[key]
  	if !ok {
  		// Element not found in the cache.
  		return nil, cache.ErrElementNotFound
  	}
  
  	// When the cache needs to evict a element to make space for another
  	// one, it starts eviction from the back, so by moving this element to
  	// the front, it's eviction is delayed because it's recently accessed.
  	c.ll.MoveToFront(el)
  	return el.Value.(*entry).value, nil
  }
docs: // Get will return value for a given key, making the element the most recently
  // accessed item in the process. Will return nil if the key isn't found.