我想path.Dir()
在Unix和Windows上使用特定于平台的目录.请看一下代码:
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`))
}
Run Code Online (Sandbox Code Playgroud)
这输出
path.Dir("a/b/c"): a/b
path.Dir("c:\foo\bar.exe"): .
Run Code Online (Sandbox Code Playgroud)
我想第二次打电话给path.Dir()
(windows)类似的东西
c:\foo
Run Code Online (Sandbox Code Playgroud)
是否可以告诉path.dir()
我在Windows上运行的程序使用Windows分隔符?或者我应该始终将反斜杠转换\
为正斜杠(/
)?这里的首选策略是什么?
top*_*kip 13
我看到"问题"在哪里.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`))
}
Run Code Online (Sandbox Code Playgroud)
在Windows上:
filepath.Dir("a/b/c"): a\b
filepath.Dir("c:\foo\bar.exe"): c:\foo
Run Code Online (Sandbox Code Playgroud)