解析URL使用url.Parse()获取各部分,ParseQuery处理查询参数,Query().Set()和Encode()构建编码URL,PathEscape/QueryEscape处理特殊字符,掌握这些即可应对常见URL操作。

在Go语言中,net/url 包提供了对URL进行解析、构建和编码的能力。它能处理标准的URL格式,包括查询参数、主机、路径等部分。下面通过实际示例介绍常见用法。
解析URL
使用 url.Parse() 可以将字符串形式的URL解析为 *url.URL 结构体,便于访问各个组成部分。
package mainimport ( "fmt" "net/url")func main() { u, err := url.Parse("https://user:pass@example.com:8080/path/to/page?query=123&name=go#section") if err != nil { panic(err) } fmt.Println("Scheme:", u.Scheme) // https fmt.Println("User:", u.User) // user:pass fmt.Println("Host:", u.Host) // example.com:8080 fmt.Println("Path:", u.Path) // /path/to/page fmt.Println("RawQuery:", u.RawQuery) // query=123&name=go fmt.Println("Fragment:", u.Fragment) // section}
提取查询参数
URL中的查询字符串可以通过 ParseQuery 解析为 map 类型,方便读取多个参数值。
query, _ := url.ParseQuery(u.RawQuery)fmt.Println("query=:", query["query"]) // [123]fmt.Println("name=:", query["name"]) // [go]// 获取单个值(推荐用于单一参数)fmt.Println("name:", query.Get("name")) // go
注意:Get() 返回第一个匹配值,避免越界错误,适合大多数场景。
立即学习“go语言免费学习笔记(深入)”;
构建和编码URL
手动构造URL时,应正确编码各部分,尤其是查询参数,防止特殊字符引发问题。
u := &url.URL{ Scheme: "https", Host: "example.com", Path: "/search",}// 添加查询参数q := u.Query()q.Set("q", "golang tutorial")q.Set("page", "1")u.RawQuery = q.Encode()fmt.Println(u.String()) // https://example.com/search?q=golang+tutorial&page=1
Query().Set() 自动进行百分号编码,Encode() 输出合法的查询字符串。
处理特殊字符编码
某些场景需要单独对路径或参数进行编码,可使用 url.PathEscape 和 url.QueryEscape。
url.QueryEscape(“a b&c”) → a+b%26c url.PathEscape(“path with space”) → path+with+space
解码使用对应函数:QueryUnescape 和 PathUnescape。
基本上就这些。掌握 Parse、Query 处理和 Escape 方法,就能应对大多数网络请求中的URL操作需求。不复杂但容易忽略细节,比如编码缺失可能导致接口调用失败。
以上就是Golang netURL解析与编码示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1410890.html
微信扫一扫
支付宝扫一扫