golang:跨平台path.Dir

我想在Unix和Windows上使用path.Dir()和平台特定的目录。 请看代码:

 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`)) } 

这输出

 path.Dir("a/b/c"): a/b path.Dir("c:\foo\bar.exe"): . 

我想第二次调用path.Dir()窗口)的东西

 c:\foo 

是否有可能告诉path.dir()使用Windows分隔符为我的程序在Windows上运行? 或者我应该总是将反斜杠\转正斜杠( / )? 这里的首选策略是什么?

Solutions Collecting From Web of "golang:跨平台path.Dir"

我看到“问题”在哪里。 在golang-nuts的讨论给了我提示, path.Dir()总是使用/filepath.Dir()是用于平台相关操作的函数。

 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`)) } 

在窗户上:

 filepath.Dir("a/b/c"): a\b filepath.Dir("c:\foo\bar.exe"): c:\foo