url解析
rawURL := "postgres://user:pass@host.com:5432/path?k=v#f"
u, err := url.Parse(rawURL)
if err != nil {
panic(err)
}
fmt.Println("scheme:", u.Scheme)
fmt.Println("opaque:", u.Opaque)
fmt.Println("user:", u.User)
fmt.Println("user.username:", u.User.Username())
p, _ := u.User.Password()
fmt.Println("user.password:", p)
fmt.Println("host:", u.Host)
host, port, _ := net.SplitHostPort(u.Host)
fmt.Println("host.splitHost:", host)
fmt.Println("host.splitPort:", port)
fmt.Println("path:", u.Path)
fmt.Println("rawPath:", u.RawPath)
fmt.Println("forceQuery:", u.ForceQuery)
fmt.Println("rawQuery:", u.RawQuery)
m, _ := url.ParseQuery(u.RawQuery)
fmt.Println("rawQuery map:", m)
fmt.Println("fragment:", u.Fragment)
fmt.Println("rawFragment:", u.RawFragment)
scheme: postgres
opaque:
user: user:pass
user.username: user
user.password: pass
host: host.com:5432
host.splitHost: host.com
host.splitPort: 5432
path: /path
rawPath:
forceQuery: false
rawQuery: k=v
rawQuery map: map[k:[v]]
fragment: f
rawFragment: