我想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()(windows)类似
c:\foo
是否可以告诉path.dir()我在Windows上运行的程序使用Windows分隔符?还是应该始终将反斜杠转换\ 为正斜杠(/)?这里首选的策略是什么?
path.dir()
\
/
我看到“问题”在哪里。在golang-nuts上的讨论为我提供了提示,该提示path.Dir()始终使用/并且filepath.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`)) }
在Windows上:
filepath.Dir("a/b/c"): a\b filepath.Dir("c:\foo\bar.exe"): c:\foo