在go中将url.Values 类型进行url encode使用函数url.Values.Encode() url decode 使用 url.ParseQuery(string)
package main import ( "fmt" "net/url" ) func main() { // url encode v := url.Values{} v.Add("a", "aa") v.Add("b", "bb") v.Add("c", "有没有人") body := v.Encode() fmt.Println(v) fmt.Println(body) // url decode m, _ := url.ParseQuery(body) fmt.Println(m) } `` map[a:[aa] b:[bb] c:[有没有人]] a=aa&b=bb&c=%E6%9C%89%E6%B2%A1%E6%9C%89%E4%BA%BA map[b:[bb] c:[有没有人] a:[aa]] // Encode encodes the values into ``URL encoded'' form // ("bar=baz&foo=quux") sorted by key. // 以URL encoded方式编码values并按key进行排序 func (v Values) Encode() string { if v == nil { return "" } var buf bytes.Buffer keys := make([]string, 0, len(v)) for k := range v { keys = append(keys, k) } sort.Strings(keys) for _, k := range keys { vs := v[k] prefix := QueryEscape(k) + "=" for _, v := range vs { if buf.Len() > 0 { buf.WriteByte('&') } buf.WriteString(prefix) buf.WriteString(QueryEscape(v)) } } return buf.String() } // ParseQuery parses the URL-encoded query string and returns // a map listing the values specified for each key. // ParseQuery always returns a non-nil map containing all the // valid query parameters found; err describes the first decoding error // encountered, if any. // // Query is expected to be a list of key=value settings separated by // ampersands or semicolons. A setting without an equals sign is // interpreted as a key set to an empty value. // 解析URL-encoded编码的字符串,按照key=value方式解析并构造map,没有=号的解析为key并设置值为空 func ParseQuery(query string) (Values, error) { m := make(Values) err := parseQuery(m, query) return m, err }
GO 语言URL encode与decode方法介绍到这里,更多go学习请参考编程字典go教程 和问答部分,谢谢大家对编程字典的支持。
原文链接:https://blog.csdn.net/defaultbyzt/article/details/82021480?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163599231616780274182818%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163599231616780274182818&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-9-82021480.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450