func (rt *router) findRouteFromURL(httpMethod string, urlObj *url.URL) (*Route, map[string]string, bool) {

	// lookup the routes in the Trie
	matches, pathMatched := rt.trie.FindRoutesAndPathMatched(
		strings.ToUpper(httpMethod), // work with the httpMethod in uppercase
		escapedPath(urlObj),         // work with the path urlencoded
	)

	// short cuts
	if len(matches) == 0 {
		// no route found
		return nil, nil, pathMatched
	}

	if len(matches) == 1 {
		// one route found
		return matches[0].Route.(*Route), matches[0].Params, pathMatched
	}

	// multiple routes found, pick the first defined
	result := rt.ofFirstDefinedRoute(matches)
	return result.Route.(*Route), result.Params, pathMatched
}
func (rt *router) findRouteFromURL(httpMethod string, urlObj *url.URL) (*Route, map[string]string, bool) {

	
	matches, pathMatched := rt.trie.FindRoutesAndPathMatched(
		strings.ToUpper(httpMethod), 
		escapedPath(urlObj),         
	)

	
	if len(matches) == 0 {
		
		return nil, nil, pathMatched
	}

	if len(matches) == 1 {
		
		return matches[0].Route.(*Route), matches[0].Params, pathMatched
	}

	
	result := rt.ofFirstDefinedRoute(matches)
	return result.Route.(*Route), result.Params, pathMatched
}
func ( rt * router ) findRouteFromURL ( httpMethod string , urlObj * url . URL ) ( * Route , map [ string ] string , bool ) { // lookup the routes in the Trie matches , pathMatched := rt . trie . FindRoutesAndPathMatched ( strings . ToUpper ( httpMethod ) , // work with the httpMethod in uppercase escapedPath ( urlObj ) , // work with the path urlencoded ) // short cuts if len ( matches ) == 0 { // no route found return nil , nil , pathMatched } if len ( matches ) == 1 { // one route found return matches [ 0 ] . Route . ( * Route ) , matches [ 0 ] . Params , pathMatched } // multiple routes found, pick the first defined result := rt . ofFirstDefinedRoute ( matches ) return result . Route . ( * Route ) , result . Params , pathMatched }
// Return the first matching Route and the corresponding parameters for a given URL object.
Return the first matching Route and the corresponding parameters for a given URL object .