I am currently using strings.TrimLeft(s string, cutset string)
on a path and want to pass os.PathSeparator
as the second argument.
os.PathSeparator
is defined in the os
package as follows:
const (
PathSeparator = '\\' // OS-specific path separator
PathListSeparator = ';' // OS-specific path list separator
)
When I do pass it, I get the following error:
cannot use os.PathSeparator (type rune) as type string in argument to strings.TrimLeft
Any idea why os.PathSeparator
isn't a string?
Because the separator actually is only a single character. If you want to use it as a string, why not simply cast it to string?
strings.TrimLeft("/absolute/path", string(os.PathSeparator))
will return "absolute/path"
Path separators are single characters. If a given constant fits in a type, there's little reason to use a broader type.
You can still trim using os.PathSeparator
, you just need to make a string out of it first.
For instance:
fmt.Println(strings.TrimLeft("/foo/bar/baz", string(os.PathSeparator)))
// Outputs: foo/bar/baz