登录
首页 >  Golang >  Go问答

path.IsAbs 返回 Windows 路径的错误结果

来源:stackoverflow

时间:2024-04-03 18:51:38 466浏览 收藏

一分耕耘,一分收获!既然都打开这篇《path.IsAbs 返回 Windows 路径的错误结果》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

path.isabs 的文档说 isabs 报告路径是否是绝对路径。我的代码中有一个函数,用于检查第一个参数是否是绝对路径,如果不是,则会创建一个绝对路径。

func getPath() string {
    var dir string
    fmt.Printf("first arg -> %s and is it abs? %t\n", os.Args[1], path.IsAbs(os.Args[1]))
    if path.IsAbs(os.Args[1]) {
        dir = os.Args[1]
    } else {
        var currentDir string
        currentDir = filepath.Dir(os.Args[0])
        dir, _ = filepath.Abs(path.Join(currentDir, os.Args[1]))
    }
    return dir
}

输出是 first arg -> c:\users\mohammad\music\uncategorized\telegram 是abs吗?假

但是第一个参数是绝对的,那么我错过了什么?


解决方案


看看这个函数的source code,很明显它只是检查路径的第一个字符是否是/。这意味着它采用 unix 样式的路径,而不是带有驱动器号的 windows 样式。但这种行为是设计使然,并且也有详细记录。在 the documentation 的开头,明确表示:

路径包只能用于由正斜杠分隔的路径,例如 url 中的路径。 此软件包不处理带有驱动器号或反斜杠的 windows 路径;要操作操作系统路径,请使用 path/filepath 包。

因此,请遵循文档并针对您的特定用例使用正确的包。

对于 windows 操作系统,您可以使用

c:\\users\\mohammad\\music\\uncategorized\\telegram

C:/Users/Mohammad/Music/Uncategorized/Telegram

它们应该能够完美地适合您的情况。

以上就是《path.IsAbs 返回 Windows 路径的错误结果》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>