code: func ReplaceParameter(s string, params interface{}, value interface{}) bool {
  	if params == nil {
  		return false
  	}
  
  	if paramsValue := reflect.ValueOf(params); paramsValue.Kind() == reflect.Slice {
  		if paramsValueSliceLength := paramsValue.Len(); paramsValueSliceLength > 0 {
  
  			if p := strings.SplitN(s, ".", 2); len(p) > 1 {
  				index, err := strconv.ParseUint(p[0], 10, 64)
  
  				if err != nil || paramsValueSliceLength <= int(index) {
  					return false
  				}
  
  				return ReplaceParameter(p[1], params.([]interface{})[index], value)
  			}
  		}
  
  		return false
  	}
  
  	if p := strings.SplitN(s, ".", 2); len(p) > 1 {
  		if pValue, ok := params.(map[string]interface{})[p[0]]; ok {
  			return ReplaceParameter(p[1], pValue, value)
  		}
  	} else {
  		if _, ok := (*params.(*map[string]interface{}))[p[0]]; ok {
  			(*params.(*map[string]interface{}))[p[0]] = value
  			return true
  		}
  	}
  
  	return false
  }
docs: // ReplaceParameter replaces parameter value with the passed value in the passed map
  // (please note you should pass pointer to the map, because we're modifying it)
  // based on the passed string