我目前正在使用Windows。我使用以下代码获取相对路径的绝对路径。
absolutePath, err := filepath.Abs(relativePath)
此输出为C:\project\test
。有什么方法可以"技巧" filepath.Abs
拥有Linux样式的绝对路径,无论是/project/test
还是/d/project/test/
?谢谢!
答案 0 :(得分:1)
正如@JimB所指出的,将相对路径转换为绝对路径不仅是特定于操作系统的,而是特定于上下文的:不同系统上的相同路径(无论操作系统如何)都可以产生不同的路径;实际上,即使在相同的系统上,相对于来自不同工作目录的绝对值的转换也可以产生不同的路径。再次@JimB指出,您可以使用path.Clean
删除任何不必要的或reduntant相对路径组件(例如将/dir/../otherDir/./subDir/
转换为/otherDir/subDir/
),但这是最接近你的任何东西上下文敏感的。
如果您只想转换表示,那么filepath.ToSlash
将使用正斜杠替换所有特定于平台的分隔符。如果您尝试重新使用跨系统的路径,可以在输入上运行ToSlash
,使用正斜杠存储“通用”路径,然后在目标系统上使用filepath.FromSlash
进行转换返回特定于平台的路径分隔符。