URLs possibilitam uma forma uniforme de encontar recursos. Aqui está como parsear URLs em Go. |
|
package main |
|
import ( "fmt" "net" "net/url" ) |
|
func main() { |
|
Aqui será parseado esta URL de exemplo, que inclui schema, informação de autênticação, host, porta, caminho (path), query params, e fragmentos de query. |
s := "postgres://user:pass@host.com:5432/path?k=v#f" |
Aqui a URL é parseada e assegurada de que não ocorreram erros. |
u, err := url.Parse(s) if err != nil { panic(err) } |
Para acessar o schema é bem direto. |
fmt.Println(u.Scheme) |
|
fmt.Println(u.User) fmt.Println(u.User.Username()) p, _ := u.User.Password() fmt.Println(p) |
O |
fmt.Println(u.Host) host, port, _ := net.SplitHostPort(u.Host) fmt.Println(host) fmt.Println(port) |
Aqui são extraídos o |
fmt.Println(u.Path) fmt.Println(u.Fragment) |
Para obter os query params em uma string de formato
|
fmt.Println(u.RawQuery) m, _ := url.ParseQuery(u.RawQuery) fmt.Println(m) fmt.Println(m["k"]) fmt.Println(m["k"][0]) } |
Executando o código de parseamento de URLs, são exibidas todas as partes extraídas. |
$ go run url-parsing.go postgres user:pass user pass host.com:5432 host.com 5432 /path f chave=valor&outrachave=outrovalor map[chave:[valor] outrachave:[outrovalor]] [valor] valor |
Próximo exemplo: SHA256 Hashes.