Если вы спрашиваете, есть ли способ сделать это с помощью 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]
}
Это дает преимущество, заключающееся в том, что нет необходимости разбивать всю строку, и поэтому может быть немного быстрее на длинных путях.