package main import ( "fmt" "net/url" "path" "path/filepath" "strings" ) func main() { rawURL := "https://www.manong.life/dir1/dir2/demo.html?name=张三&gender=男&age=18" parse, err := url.Parse(rawURL) // 解析URL if err != nil { panic("解析URL失败:" + err.Error()) } // URL基本信息 fmt.Println("Scheme -> " + parse.Scheme) // Scheme -> https fmt.Println("Host -> " + parse.Host) // Host -> www.manong.life fmt.Println("Path -> " + parse.Path) // Path -> /dir1/dir2/demo.html fmt.Println("RequestURI -> " + parse.RequestURI()) // RequestURI -> /dir1/dir2/demo.html?name=张三&gender=男&age=18 fmt.Println("RawQuery -> " + parse.RawQuery) // RawQuery -> name=张三&gender=男&age=18 // 获取目录和文件名(含扩展名) dir, file := filepath.Split(parse.Path) fmt.Println("dir -> " + dir) // dir -> /dir1/dir2/ fmt.Println("file -> " + file) // file -> demo.html // 获取扩展名和文件名(不含扩展名) ext := path.Ext(file) filename := strings.TrimSuffix(file, ext) fmt.Println("ext -> " + ext) // ext -> .html fmt.Println("name -> " + filename) // name -> demo // 获取GET参数 query := parse.Query() name := query.Get("name") gender := query.Get("gender") age := query.Get("age") fmt.Printf("俺叫%+v(%+v),今年%+v岁。\n", name, gender, age) // 俺叫张三(男),今年18岁。 // 判断GET参数是否存在 if query.Has("height") { fmt.Println("height参数存在") } else { fmt.Println("height参数不存在") // height参数不存在 } // 将GET参数转为map params := map[string]string{} for _, item := range strings.Split(parse.RawQuery, "&") { kv := strings.Split(item, "=") // key-value if len(kv) == 2 { params[kv[0]] = kv[1] } } fmt.Println(params) // map[age:18 gender:男 name:张三] }
Copyright © 2025 码农人生. All Rights Reserved