Функция filepath.Rel
Функция filepath.Rel вычисляет относительный путь
от базового каталога до указанного целевого пути.
В первый параметр передается базовый путь (basepath),
во второй параметр — целевой путь (targpath).
Функция возвращает строку с относительным путем и ошибку,
если путь не может быть вычислен.
Синтаксис
gofunc filepath.Rel(basepath, targpath string) (string, error)
Пример
Получим относительный путь от каталога /home/user/project
к файлу /home/user/project/docs/readme.md:
gopackage main
import (
"fmt"
"path/filepath"
)
func main() {
base := "/home/user/project"
target := "/home/user/project/docs/readme.md"
rel, err := filepath.Rel(base, target)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(rel)
}
Результат выполнения кода:
go"docs/readme.md"
Пример
Вычислим относительный путь из каталога /home/user
в каталог /var/log:
gopackage main
import (
"fmt"
"path/filepath"
)
func main() {
base := "/home/user"
target := "/var/log"
rel, err := filepath.Rel(base, target)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(rel)
}
Результат выполнения кода:
go"../../var/log"
Пример
Попробуем получить относительный путь, когда целевой путь не находится внутри базового каталога:
gopackage main
import (
"fmt"
"path/filepath"
)
func main() {
base := "/home/user/project"
target := "/etc/config"
rel, err := filepath.Rel(base, target)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(rel)
}
Результат выполнения кода:
go"../../../etc/config"
Пример
Обработаем случай, когда базовый путь является родительским каталогом для целевого пути:
gopackage main
import (
"fmt"
"path/filepath"
)
func main() {
base := "/home/user/project/docs"
target := "/home/user/project"
rel, err := filepath.Rel(base, target)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(rel)
}
Результат выполнения кода:
go".."
Смотрите также
-
функцию
filepath.Abs,
которая преобразует относительный путь в абсолютный -
функцию
filepath.Join,
которая объединяет элементы пути с разделителем -
функцию
filepath.Clean,
которая нормализует путь -
функцию
filepath.Split,
которая разделяет путь на каталог и имя файла