code: func (i *itemWithExp) expiration(now time.Time) time.Duration {
  	if i.exp.IsZero() {
  		return 0 // never expires
  	}
  	d := i.exp.Sub(now)
  	if d <= 0 {
  		panic("item is already expired, isAcceptableTTL should have detected this")
  	}
  	return d
  }
docs: // expiration returns expiration time to use when storing this item.
  //
  // Zero return value means "does not expire" (as understood by both LRU and
  // Global caches). Panics if the calculated expiration is negative. Use
  // isAcceptableTTL to detect this case beforehand.