func (d decoder) DecodeString(dst interface{}, src string) error {
	vs, err := url.ParseQuery(src)
	if err != nil {
		return err
	}
	v := reflect.ValueOf(dst)
	return d.decodeNode(v, parseValues(vs, canIndexOrdinally(v)))
}
DecodeString decodes src into dst.
package form
import (
	"fmt"
	"io"
	"io/ioutil"
	"net/url"
	"reflect"
	"strconv"
	"time"
)
func NewDecoder(r io.Reader) *decoder {
	return &decoder{r: r}
}
type decoder struct {
	r             io.Reader
	ignoreUnknown bool
	ignoreCase    bool
}
func (d decoder) Decode(dst interface{}) error {
	bs, err := ioutil.ReadAll(d.r)
	if err != nil {
		return err
	}
	vs, err := url.ParseQuery(string(bs))
	if err != nil {
		return err
	}
	v := reflect.ValueOf(dst)
	return d.decodeNode(v, parseValues(vs, canIndexOrdinally(v)))
}
func (d *decoder) IgnoreUnknownKeys(ignoreUnknown bool) {
	d.ignoreUnknown = ignoreUnknown
}
func (d *decoder) IgnoreCase(ignoreCase bool) {
	d.ignoreCase = ignoreCase
}