func (api *Api) newEndpoint(dirs ...interface{}) endpoint {
	path := ""
	authReq := false
	for i, dir := range dirs {
		if sdir, ok := dir.(string); ok {
			path += "/" + sdir
			continue
		}
		if idir, ok := dir.(uint64); ok {
			path += fmt.Sprintf("/%d", idir)
			continue
		}
		if bdir, ok := dir.(bool); ok && i+1 == len(dirs) {
			authReq = bdir
			continue
		}
		panic("Only strings and uint64 accepted; last can be bool")
	}
	return endpoint{api, path, authReq}
}
Creates a new endpoint at the join of all dirs, where dir can be string or uint64 (ids).
Last param can be bool, which would make an authentication required endpoint
package soundcloud
import (
	"fmt"
	"net/url"
)
type endpoint struct {
	api     *Api
	base    string
	authReq bool
}