code: func (c *pageCache) get(key string, apply func(p Pages), pageLists ...Pages) (Pages, bool) {
  	return c.getP(key, func(p *Pages) {
  		if apply != nil {
  			apply(*p)
  		}
  	}, pageLists...)
  }
docs: // get/getP gets a Pages slice from the cache matching the given key and
  // all the provided Pages slices.
  // If none found in cache, a copy of the first slice is created.
  //
  // If an apply func is provided, that func is applied to the newly created copy.
  //
  // The getP variant' apply func takes a pointer to Pages.
  //
  // The cache and the execution of the apply func is protected by a RWMutex.