I'd like to use path.Dir()
on Unix and Windows with a platform specific directory. Please take a look at the code:
package main
import (
"fmt"
"path"
)
func main() {
fmt.Println(`path.Dir("a/b/c"): `, path.Dir("a/b/c"))
fmt.Println(`path.Dir("c:\foo\bar.exe"): `, path.Dir(`c:\foo\bar.exe`))
}
This outputs
path.Dir("a/b/c"): a/b
path.Dir("c:\foo\bar.exe"): .
I'd like to get for the second call to path.Dir()
(windows) something like
c:\foo
Is it possible to tell path.dir()
to use Windows separators for my program running on windows? Or should I always convert the backslashes \
to forward slashes (/
)? What is the preferred strategy here?
I see where the "problem" is. This discussion at golang-nuts gave me the hint, that path.Dir()
always uses /
and filepath.Dir()
is the function to be used for platform dependent manipulation.
package main
import (
"fmt"
"path/filepath"
)
func main() {
fmt.Println(`filepath.Dir("a/b/c"): `, filepath.Dir("a/b/c"))
fmt.Println(`filepath.Dir("c:\foo\bar.exe"): `, filepath.Dir(`c:\foo\bar.exe`))
}
on windows:
filepath.Dir("a/b/c"): a\b
filepath.Dir("c:\foo\bar.exe"): c:\foo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With