您可以使用net / url模块进行所有想要的URL编码。它不会分解URL各个部分的单独编码功能,您必须让它构造整个URL。斜视了源代码后,我认为它做得很好并且符合标准。
package main
import (
"fmt"
"net/url"
)
func main() {
Url, err := url.Parse("http://www.example.com")
if err != nil {
panic("boom")
}
Url.Path += "/some/path/or/other_with_funny_characters?_or_not/"
parameters := url.Values{}
parameters.Add("hello", "42")
parameters.Add("hello", "54")
parameters.Add("vegetable", "potato")
Url.RawQuery = parameters.Encode()
fmt.Printf("Encoded URL is %q\n", Url.String())
}
哪些印刷品
Encoded URL is "http://www.example.com/some/path/or/other_with_funny_characters%3F_or_not/?vegetable=potato&hello=42&hello=54"