func (ssm *strSliceMap) Set(key, value string) {
	ssm.data[key] = []string{value}
}
Set key and value to stringSliceMap.
If key exists, existed value will drop and new value will set.
package direwolf
import (
	"net/http"
	"net/url"
	"sort"
	"strings"
	jsoniter "github.com/json-iterator/go"
)
type RequestOption interface {
	bindRequest(request *Request) error
}
type Body []byte
func (options Body) bindRequest(request *Request) error {
	request.Body = options
	return nil
}
type JsonBody []byte
func NewJsonBody(v interface{}) JsonBody {
	body, err := jsoniter.Marshal(v)
	if err != nil {
		return nil
	}
	return body
}
func (options JsonBody) bindRequest(request *Request) error {
	request.Body = options
	return nil
}
type RedirectNum int
func (options RedirectNum) bindRequest(request *Request) error {
	request.RedirectNum = int(options)
	return nil
}
type Timeout int
func (options Timeout) bindRequest(request *Request) error {
	request.Timeout = int(options)
	return nil
}
type Proxy struct {
	HTTP  string
	HTTPS string
}
func (options *Proxy) bindRequest(request *Request) error {
	request.Proxy = options
	return nil
}
type strSliceMap struct {
	data map[string][]string
}
func (ssm *strSliceMap) New(keyValue ...string) {
	ssm.data = make(map[string][]string)
	if keyValue != nil {
		if len(keyValue)%2 != 0 {
			panic("key and value must be pair")
		}
		for i := 0; i < len(keyValue)/2; i++ {
			key := keyValue[i*2]
			value := keyValue[i*2+1]
			ssm.data[key] = append(ssm.data[key], value)
		}
	}
}
func (ssm *strSliceMap) Add(key, value string) {
	ssm.data[key] = append(ssm.data[key], value)
}