code: func (scp *ShortcodeWithPage) Get(key interface{}) interface{} {
  	if scp.Params == nil {
  		return nil
  	}
  	if reflect.ValueOf(scp.Params).Len() == 0 {
  		return nil
  	}
  
  	var x reflect.Value
  
  	switch key.(type) {
  	case int64, int32, int16, int8, int:
  		if reflect.TypeOf(scp.Params).Kind() == reflect.Map {
  			// We treat this as a non error, so people can do similar to
  			// {{ $myParam := .Get "myParam" | default .Get 0 }}
  			// Without having to do additional checks.
  			return nil
  		} else if reflect.TypeOf(scp.Params).Kind() == reflect.Slice {
  			idx := int(reflect.ValueOf(key).Int())
  			ln := reflect.ValueOf(scp.Params).Len()
  			if idx > ln-1 {
  				return ""
  			}
  			x = reflect.ValueOf(scp.Params).Index(idx)
  		}
  	case string:
  		if reflect.TypeOf(scp.Params).Kind() == reflect.Map {
  			x = reflect.ValueOf(scp.Params).MapIndex(reflect.ValueOf(key))
  			if !x.IsValid() {
  				return ""
  			}
  		} else if reflect.TypeOf(scp.Params).Kind() == reflect.Slice {
  			// We treat this as a non error, so people can do similar to
  			// {{ $myParam := .Get "myParam" | default .Get 0 }}
  			// Without having to do additional checks.
  			return nil
  		}
  	}
  
  	switch x.Kind() {
  	case reflect.String:
  		return x.String()
  	case reflect.Int64, reflect.Int32, reflect.Int16, reflect.Int8, reflect.Int:
  		return x.Int()
  	default:
  		return x
  	}
  
  }
docs: // Get is a convenience method to look up shortcode parameters by its key.