首页 > 代码库 > net/url

net/url

package main

import (
	"fmt"
	"net/url"
)

func main() {
	escape := url.QueryEscape("你好世界+%AB")
	fmt.Println(escape)                    //QueryEscape函数对string进行转码,并返回
	fmt.Println(url.QueryUnescape(escape)) //QueryEscape的解码函数
	url1 := "http://localhost:8080/user/show?m1=77"
	u, err := url.Parse(url1)
	if err != nil {
		fmt.Println(err)
	}

	fmt.Println(u.Host, u.String())
	u.Host = "baidu.com" //修改host
	fmt.Println(u)

	u1, _ := url.ParseRequestURI("http://localhost:8080/tongji/huifanginfo?m1=117&aa=bb&cc=中国")
	fmt.Println(u1.IsAbs()) //是否是url
	fmt.Println(u1)
	u2 := u1.RawQuery                                     //url ?后面的参数字符串
	fmt.Println(url.ParseQuery(u2))                       //解析查询字符串到url.values
	fmt.Println(u1.Query())                               //返回u1的url.values
	fmt.Println(u1.RequestURI())                          //返回编码好的path?query或opaque?query字符串
	fmt.Println(u1.String())                              //返回*url的字符串
	fmt.Println(u1.Parse("?m1=117&aa=bb&cc=中国&dd=新加的参数")) //补全u1的url
	fmt.Println(u1.ResolveReference(u))                   //和上面差不多,参数是一个*url 不返回错误,没看明白

	v := url.Values{}
	v.Set("name", "zhangsan") //将key对应的值集设为只有value,它会替换掉已有的值集
	v.Add("sex", "男")         //将value添加到key关联的值集里原有的值后面
	v.Add("sex", "保密")
	fmt.Println(v.Get("name")) //获取key对应的值集的第一个值
	fmt.Println(v.Get("sex"))
	fmt.Println(v["sex"])                   //这个会取出这个值集的slice
	fmt.Println(v.Encode())                 //将v编码为url编码格式
	fmt.Println(url.ParseQuery(v.Encode())) //解析一个url编码的查询字符串,返回Values

}



net/url