Функция filepath.Clean

Функция filepath.Clean нормализует переданный путь, возвращая его кратчайшее эквивалентное представление. В первый параметр передается исходный путь в виде строки. Она удаляет лишние разделители, заменяет косую черту на разделитель операционной системы, обрабатывает элементы . (текущая директория) и .. (родительская директория).

Синтаксис

gofilepath.Clean(path)

Пример

Давайте нормализуем путь с лишними разделителями и элементами:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res := filepath.Clean("a//b/../c/./d")
  fmt.Println(res)
}

Результат выполнения кода:

go"a/c/d"

Пример

Давайте посмотрим, как функция обрабатывает путь с элементом .., который выходит за пределы корня:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res := filepath.Clean("/a/../../b")
  fmt.Println(res)
}

Результат выполнения кода:

go"/b"

Пример

Давайте убедимся, что пустой путь превращается в точку:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res := filepath.Clean("")
  fmt.Println(res)
}

Результат выполнения кода:

go"."

Смотрите также

  • функцию filepath.Join,
    которая объединяет части пути с правильным разделителем
  • функцию filepath.Abs,
    которая возвращает абсолютный путь
  • функцию filepath.Base,
    которая возвращает последний элемент пути
  • функцию filepath.Dir,
    которая возвращает родительскую директорию пути