发布时间:2024-12-23 02:23:44
```go urlString := "https://www.example.com/path?key1=value1&key2=value2#fragment" u, err := url.Parse(urlString) if err != nil { log.Fatal(err) } ```
上面的代码将字符串解析为一个`url.URL`对象,并将其存储在变量`u`中。如果解析过程中出现错误,我们可以使用`log.Fatal`函数打印错误信息并退出程序。```go urlObject := &url.URL{ Scheme: "https", Host: "www.example.com", Path: "/path", RawQuery: "key1=value1&key2=value2", Fragment: "fragment", } urlString := urlObject.String() fmt.Println(urlString) ```
上面的代码将构造一个URL对象,并将其转换为字符串后打印出来。```go original := "param=value¶m=中文" encoded := url.QueryEscape(original) decoded, err := url.QueryUnescape(encoded) if err != nil { log.Fatal(err) } fmt.Println(original) fmt.Println(encoded) fmt.Println(decoded) ```
上面的代码将会输出原始字符串、编码后的字符串以及解码后的字符串。```go baseURL := &url.URL{ Scheme: "https", Host: "www.example.com", Path: "/path", } values := url.Values{} values.Add("key1", "value1") values.Add("key2", "value2") baseURL.RawQuery = values.Encode() urlString := baseURL.String() fmt.Println(urlString) ```
上面的代码将会输出拼接后的URL字符串。我们可以使用`url.Values`类型的`Add`方法来添加参数,然后使用`Encode`方法将参数编码为URL查询字符串。