Как вы упомянули, следующий вызов функции не работает:
req.URL.ParseRequestURI(signedUrl)
, потому что:
func ParseRequestURI(rawurl string) (*URL, error)
определяется в net/url
package как функция уровня пакета (ссылка) , поэтому нельзя вызывать с помощью type
.Хотя правильный способ вызвать его, как показано ниже:
url.ParseRequestURI(signedUrl) // Here 'url' is from package name i.e. 'net/url'
С другой стороны, как вы упомянули, вы успешно можете звонить req.URL.Parse
, потому что Parse
определяется как на уровне package
, то есть на'net / url' (ссылка) , а также на уровне type
для типа *URL
(ссылка) .
Parse
в пакете net/url
определяется как:
func Parse(rawurl string) (*URL, error)
Анализ разбора rawurl в структуру URL.
Rawurl может быть относительным (путь без хоста) или абсолютным (начиная ссхема).Попытка синтаксического анализа имени хоста и пути без схемы недопустима, но может не обязательно возвращать ошибку из-за разбора неоднозначностей.
Parse
для типа *URL
определяется как:
func (u *URL) Parse(ref string) (*URL, error)
Анализ разбора URL в контексте получателя.Предоставленный URL может быть относительным или абсолютным.Parse возвращает nil, err при ошибке разбора, иначе его возвращаемое значение совпадает с ResolveReference.
Надеюсь, это вам поможет.