11

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

这输出

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

我想第二次调用path.Dir()(windows)类似的东西

c:\foo

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

4

1 回答 1

15

我知道“问题”在哪里。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
于 2012-08-26T17:46:14.207 回答