code: func Parameter(r *http.Request, key string) string {
  	params, ok := r.Context().Value(contextKeyParams).(map[string]string)
  	if ok { // Parameters already parsed.
  		return params[key]
  	}
  	paramsIdx, ok := r.Context().Value(contextKeyParamsIdx).(map[string]uint16)
  	if !ok {
  		return ""
  	}
  	params = make(map[string]string, len(paramsIdx))
  	parts := splitPath(r.URL.Path)
  	for name, idx := range paramsIdx {
  		switch name {
  		case "*":
  			for idx < uint16(len(parts)) {
  				params[name] += parts[idx]
  				if idx < uint16(len(parts))-1 {
  					params[name] += "/"
  				}
  				idx++
  			}
  		default:
  			params[name] = parts[idx]
  		}
  	}
  	*r = *r.WithContext(context.WithValue(r.Context(), contextKeyParams, params))
  	return params[key]
  }
docs: // Parameter returns the value of path parameter.
  // Result is empty if parameter doesn't exist.