Go 如何获取相对路径的根目录
我需要提取相对路径中第一个目录的第一个名称 我知道我可以:Go 如何获取相对路径的根目录,go,path,Go,Path,我需要提取相对路径中第一个目录的第一个名称 我知道我可以: relPath := "a/b/c/file.so" splitPath := strings.Split(relPath, string(os.PathSeparator)) rootDirName := splitPath[0] 有更好的方法吗?如果你问是否有方法使用1个标准Go功能:我不知道 另一种方法是: relPath := "a/b/c/file.so" i := strings.Index(relPath, string
relPath := "a/b/c/file.so"
splitPath := strings.Split(relPath, string(os.PathSeparator))
rootDirName := splitPath[0]
有更好的方法吗?如果你问是否有方法使用1个标准Go功能:我不知道 另一种方法是:
relPath := "a/b/c/file.so"
i := strings.Index(relPath, string(os.PathSeparator))
rootDirName := relPath[:i]
或者如果路径可能根本不包含/
:
relPath := "a/b/c/file.so"
i := strings.Index(relPath, string(os.PathSeparator))
rootDirName := ""
if i != -1 {
rootDirName = relPath[:i]
}
这样做的好处是不必拆分整个字符串,因此在长路径上可能会更快一些。您所说的“更好的方式”是什么意思。这可能是最简单、最短的方法。只缺少对
splitPath
length的检查。@dom正在确认。语言有时具有不明显但非常有用的特性请确保检查索引,否则如果在relPath
中未找到路径分隔符,则会出现运行时死机。此外,根据您处理的路径类型,先调用path.Clean
或filepath.Clean
可能是个好主意,如果路径类似于/a//b/c
,您希望发生什么。