Согласно go do c, общая форма URL-адреса представлена:
[scheme:][//[userinfo@]host][/]path[?query][#fragment]
URL-адреса, которые не начинаются с sla sh после схемы, интерпретируются как:
scheme:opaque[?query][#fragment]
Ваш URL анализируется как второй формат.
Вы можете использовать этот метод, чтобы получить ожидаемый результат как ваш. В функции, если в URL-адресе нет схемы, мы добавляем ее, а затем снова анализируем, чтобы получить ожидаемый результат.
func parseRawURL(rawurl string) (domain string, scheme string, err error) {
u, err := url.ParseRequestURI(rawurl)
if err != nil || u.Host == "" {
u, repErr := url.ParseRequestURI("https://" + rawurl)
if repErr != nil {
fmt.Printf("Could not parse raw url: %s, error: %v", rawurl, err)
return
}
domain = u.Host
err = nil
return
}
domain = u.Host
scheme = u.Scheme
return
}
Вы можете попробовать это на go на игровой площадке