问题解析参数

I'm trying to use a simple method that will take the request and parse the parameters but it returns the wrong number of parameters.

In my main I make a request and then call:

fmt.Println(parseParams(r, "http://localhost:8080", 2))

which leads to following values being set in the method when logged:

url: /api/users

params: [ api users]

len(params): 3

So it seems as if it think there's one extra param that I don't specify and looking at it more closely I can see theres a space before api in the params but I don't know where that comes from

func parseParams(req *http.Request, prefix string, num int) ([]string, error) {
    url := strings.TrimPrefix(req.URL.Path, prefix)
    params := strings.Split(url, "/")

    if len(params) != num || len(params[0]) == 0 || len(params[1]) == 0 {
        return nil, fmt.Errorf("Bad format. Expecting exactly %d params", num)
    }

    return params, nil
}

What you are seeing is not a space (that's just the separator), but an empty string, so the array looks like this ["", "api", "users"]. If you take away the commas and quotes, it will look like your output. So, your params are ""/"api"/"users". Usually, you can skip this 0-th index when processing the params.