code: func (c *Cache) init() {
  	if !atomic.CompareAndSwapUint32(&c.initializedCount, 0, 1) {
  		return
  	}
  
  	c.mu.Lock()
  	c.store, _ = newring(ringShards)
  	c.mu.Unlock()
  }
docs: // init initializes the cache and allocates the underlying store.  Once initialized,
  // the store re-used until Freed.