Улучшение ответа Люка Джошуа Парка состоит в том, чтобы разобрать URL-адрес относительно URL-адреса исходной страницы. Это создает абсолютный URL из того, что может быть относительным URL на странице (схема не указана, хост не указан, относительный путь). Еще одним улучшением является проверка и обработка ошибок.
func clean(pageURL, linkURL string) (string, error) {
p, err := url.Parse(pageURL)
if err != nil {
return "", err
}
l, err := p.Parse(linkURL)
if err != nil {
return "", err
}
l.Fragment = "" // chop off the fragment
return l.String()
}
Если вы не заинтересованы в получении абсолютного URL, отрубите все после #. Это работает, потому что единственное допустимое использование # в URL - это разделитель фрагментов.
func clean(linkURL string) string {
i := strings.LastIndexByte(linkURL, '#')
if i < 0 {
return linkURL
}
return linkURL[:i]
}