code: func (lm *locCache) getLoc(name string) (*time.Location, error) {
  	if name == "System" {
  		return time.Local, nil
  	}
  	lm.RLock()
  	v, ok := lm.locMap[name]
  	lm.RUnlock()
  	if ok {
  		return v, nil
  	}
  
  	if loc, err := time.LoadLocation(name); err == nil {
  		// assign value back to map
  		lm.Lock()
  		lm.locMap[name] = loc
  		lm.Unlock()
  		return loc, nil
  	}
  
  	return nil, fmt.Errorf("invalid name for timezone %s", name)
  }
docs: // getLoc first trying to load location from a cache map. If nothing found in such map, then call
  // `time.LoadLocation` to get a timezone location. After trying both way, an error will be returned
  //  if valid Location is not found.