package myUrl import "net/url" type UrlCli struct { url url.URL params url.Values } func NewUrlCli(scheme string, host string) *UrlCli { return &UrlCli{url: url.URL{Scheme: scheme, Host: host}, params: url.Values{}} } func NewUrlCliWithParse(data string) (*UrlCli, error) { urlObj, err := url.Parse(data) if err != nil { return nil, err } return &UrlCli{ url: *urlObj, params: urlObj.Query(), }, nil } func (t *UrlCli) Set(m map[string]string) { params := url.Values{} for s, s2 := range m { params.Set(s, s2) } t.params = params } func (t *UrlCli) Add(key, value string) *UrlCli { t.params.Set(key, value) return t } func (t *UrlCli) String() string { baseURL := t.url baseURL.RawQuery = t.params.Encode() return baseURL.String() }