Go 语言 net/url 包通过 url.URL 结构体和 url.Parse() 等函数提供安全的 URL 解析与构造能力,自动解码路径和查询参数(不含 fragment),推荐检查 error;修改 Path 应用 url.PathEscape(),查询参数需通过 u.Query() 操作后 Encode() 赋值;拼接相对路径应使用 ResolveReference();编码须区分 url.PathEscape() 和 url.QueryEscape()。

Go 语言的 net/url 包提供了完整、安全的 URL 解析与构造能力,核心是 url.URL 结构体和配套的解析/编码函数。正确使用它,能避免手动字符串切割带来的错误(比如路径中含 %、/ 或查询参数含特殊字符)。
用 url.Parse() 将字符串转为可操作的对象。它会自动解码路径和查询参数中的百分号编码(如 %20 → 空格),但不会解码 fragment(# 后部分)。
url.URL 的字段(如 Scheme、Host、Path、RawQuery)可直接读取。修改时注意:
Path 前建议用 url.PathEscape() 编码,避免注入斜杠或点遍历u.Query() 获取 url.Values(本质是 map[string][]string),再用 Set/Add/Del 操作,最后赋回 u.RawQuery = q.Encode()
RawQuery,易出编码错误从零构建可用 &url.URL{Scheme: "https", Host: "api.example.com", Path: "/v1/users"},再调用 u.String() 得字符串。
立即学习“go语言免费学习笔记(深入)”;
baseURL.ResolveReference(relURL),比字符串拼接更可靠路径和查询参数的编码规则不同,必须区分使用:
url.PathEscape(s):对路径段编码(保留 /、: 等分隔符,只编码语义字符)url.QueryEscape(s):对查询值编码(空格→+,其余→%xx)url.PathUnescape 或 url.QueryUnescape,它们可处理多种编码变体基本上就这些。net/url 不复杂但容易忽略编码细节,坚持用结构体方法而非字符串操作,URL 处理就稳了。
以上就是如何使用Golang net/url解析URL_Golang net/url URL操作方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号