這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport "fmt"import "net/url"import "strings"func main() {//我們將解析這個 URL 樣本,它包含了一個 scheme,認證資訊,主機名稱,連接埠,路徑,查詢參數和片段。 s := "postgres://user:pass@host.com:5432/path?k=v#f"//解析這個 URL 並確保解析沒有出錯。 u, err := url.Parse(s) if err != nil { panic(err) }//直接存取 scheme。 fmt.Println(u.Scheme)//User 包含了所有的認證資訊,這裡調用 Username和 Password 來擷取獨立值。 fmt.Println(u.User) fmt.Println(u.User.Username()) p, _ := u.User.Password() fmt.Println(p)//Host 同時包括主機名稱和連接埠資訊,如過連接埠存在的話,使用 strings.Split() 從 Host 中手動提取連接埠。 fmt.Println(u.Host) h := strings.Split(u.Host, ":") fmt.Println(h[0]) fmt.Println(h[1])//這裡我們提出路徑和查詢片段資訊。 fmt.Println(u.Path) fmt.Println(u.Fragment)//要得到字串中的 k=v 這種格式的查詢參數,可以使用 RawQuery 函數。你也可以將查詢參數解析為一個map。已解析的查詢參數 map 以查詢字串為鍵,對應值字串切片為值,所以如何只想得到一個鍵對應的第一個值,將索引位置設定為 [0] 就行了。 fmt.Println(u.RawQuery) m, _ := url.ParseQuery(u.RawQuery) fmt.Println(m) fmt.Println(m["k"][0])}//運行我們的 URL 解析程式,顯示全部我們提取的 URL 的不同資料區塊。$ go run url-parsing.go postgresuser:passuserpasshost.com:5432host.com5432/pathfk=vmap[k:[v]]v