如何使用golang在Windows上获取正确的文件名?

4
package main

import (
    "fmt"
    "path"
)

func main() {
    p := "./p/p"
    q := ".\\q\\q"
    fmt.Println(path.Base(p))
    fmt.Println(path.Base(q))
}

我在Windows上运行它,输出结果如下:
p
.\q\q

我认为path.Base返回的答案是不正确的。 那么我应该如何获取正确的文件基名呢?
1个回答

9
请使用path/filepath包而不是path,来进行特定于平台的路径操作。如文档所述:

"filepath"包实现了与目标操作系统定义的文件名路径兼容的实用程序例程。

"filepath"包使用正斜杠或反斜杠,具体取决于操作系统。 要处理始终使用正斜杠的路径(例如URL)而不考虑操作系统的情况,请参阅"path"包。

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    p := "./p/p"
    q := ".\\q\\q"
    fmt.Println(filepath.Base(p))
    fmt.Println(filepath.Base(q))
}

在 Go 1.18 上,不支持 Windows 路径。 - darc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接