您可以检查您的URL是否具有“方案”,“主机”和/或“路径”。
如果检查返回的URL,则可以看到无效部分已插入不透明数据部分(从某种意义上讲是有效的)。
url.URL{Scheme:"http", Opaque:"::/not.valid/a//a", Host:"", Path:"", RawQuery:"?a?b=&&c", Fragment:"hi"}如果您解析一个URL并且没有Scheme,Host和Path,则可能会认为它无效。(尽管没有路径的主机通常可以,因为它暗示
/,所以您需要检查一下)
u, err := url.Parse("http:::/not.valid/a//a??a?b=&&c#hi")if err != nil { log.Fatal(err)}if u.Scheme == "" || u.Host == "" || u.Path == "" { log.Fatal("invalid URL")}


