为了账号安全,请及时绑定邮箱和手机立即绑定

path.IsAbs 为 Windows 路径返回不正确的结果

path.IsAbs 为 Windows 路径返回不正确的结果

Go
慕森卡 2022-05-18 16:14:13
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 and is it abs? false但是第一个论点是绝对的,那么我在哪里失踪了?
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

查看此函数的源代码,很明显它只是检查路径的第一个字符是否为/. 这意味着它采用 UNIX 样式的路径,而不是带有驱动器号的 Windows 样式。但是这种行为是设计使然,并且也有据可查。在文档的开头,它明确地说:

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

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


查看完整回答
反对 回复 2022-05-18
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

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

C:\\Users\\Mohammad\\Music\\Uncategorized\\Telegram

或者

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

他们应该在你的情况下完美地工作。


查看完整回答
反对 回复 2022-05-18
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信