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

Go path.isbs为Windows路径返回不正确的结果,go,path,absolute-path,Go,Path,Absolute Path,的文档说明ISBS报告路径是否为绝对路径。我的代码中有一个函数,它检查第一个参数是否是绝对的,如果不是,它会创建一个绝对路径 func getPath()字符串{ var-dir字符串 fmt.Printf(“第一个参数->%s,它是abs吗?%t\n”,os.Args[1],path.isbs(os.Args[1])) 如果path.isbs(os.Args[1]){ dir=os.Args[1] }否则{ var currentDir字符串 currentDir=filepath.Dir(o

的文档说明ISBS报告路径是否为绝对路径。我的代码中有一个函数,它检查第一个参数是否是绝对的,如果不是,它会创建一个绝对路径

func getPath()字符串{
var-dir字符串
fmt.Printf(“第一个参数->%s,它是abs吗?%t\n”,os.Args[1],path.isbs(os.Args[1]))
如果path.isbs(os.Args[1]){
dir=os.Args[1]
}否则{
var currentDir字符串
currentDir=filepath.Dir(os.Args[0])
dir,z=filepath.Abs(path.Join(currentDir,os.Args[1]))
}
返回目录
}
输出为
first arg->C:\Users\Mohammad\Music\Uncategorized\Telegram,是否为abs?错误

但是第一个参数是绝对的,所以我遗漏了什么?

看看这个函数的名称,很明显它只是检查路径的第一个字符是否是
/
。这意味着它采用UNIX样式的路径,而不是带有驱动器号的Windows样式。但这种行为是经过设计的,并且有很好的文档记录。就在它的开头明确地说:

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


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

Go的文档与人们似乎习惯的不同。对于Go软件包,您也应该阅读软件包文档(或类型文档),而不仅仅是方法或函数文档。当有疑问时:阅读文档并从顶部开始阅读所有内容(至少是软件包文档)。