func Join(elem ...string) string {
	size := 0
	for _, e := range elem {
		size += len(e)
	}
	if size == 0 {
		return ""
	}
	buf := make([]byte, 0, size+len(elem)-1)
	for _, e := range elem {
		if len(buf) > 0 || e != "" {
			if len(buf) > 0 {
				buf = append(buf, '/')
			}
			buf = append(buf, e...)
		}
	}
	return Clean(string(buf))
}
// Join joins any number of path elements into a single path,
// separating them with slashes. Empty elements are ignored.
// The result is Cleaned. However, if the argument list is
// empty or all its elements are empty, Join returns
// an empty string.
Join joins any number of path elements into a single path,
separating them with slashes. Empty elements are ignored.
The result is Cleaned. However, if the argument list is
empty or all its elements are empty, Join returns
an empty string.
// Join joins any number of path elements into a single path // separating them with slashes . Empty elements are ignored . // The result is Cleaned . However if the argument list is // empty or all its elements are empty Join returns // an empty string .
func Join(elem ...string) string {
	size := 0
	for _, e := range elem {
		size += len(e)
	}
	if size == 0 {
		return ""
	}
	buf := make([]byte, 0, size+len(elem)-1)
	for _, e := range elem {
		if len(buf) > 0 || e != "" {
			if len(buf) > 0 {
				buf = append(buf, '/')
			}
			buf = append(buf, e...)
		}
	}
	return Clean(string(buf))
}
func Join ( elem ... string ) string { size := 0 for _ , e := range elem { size += len ( e ) } if size == 0 { return " " } buf := make ( [ ] byte , 0 , size + len ( elem ) - 1 ) for _ , e := range elem { if len ( buf ) > 0 || e != " " { if len ( buf ) > 0 { buf = append ( buf , '/' ) } buf = append ( buf , e ... ) } } return Clean ( string ( buf ) ) }
Join joins any number of path elements into a single path,
separating them with slashes.
Join joins any number of path elements into a single path separating them with slashes .