РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
561 of 1593 menu

Функция filepath.EvalSymlinks

Функция filepath.EvalSymlinks из пакета path/filepath принимает путь к файлу или директории и возвращает канонический путь, в котором все символические ссылки (symlinks) разрешены в их конечные цели. Первым параметром функция принимает строку с путем, который необходимо обработать. Если путь содержит несколько символических ссылок, они будут разрешены рекурсивно.

Синтаксис

filepath.EvalSymlinks(path string) (string, error)

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

Пример

Предположим, у нас есть директория /home/user/project и в ней символическая ссылка link_to_data, которая указывает на реальную директорию /var/data/storage. Разрешим эту ссылку:

package main import ( "fmt" "path/filepath" ) func main() { path := "/home/user/project/link_to_data" res, err := filepath.EvalSymlinks(path) if err != nil { fmt.Println("Error:", err) return } fmt.Println(res) }

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

"/var/data/storage"

Пример

Попробуем разрешить путь, который не существует. В этом случае функция вернет ошибку:

package main import ( "fmt" "path/filepath" ) func main() { path := "/nonexistent/path" res, err := filepath.EvalSymlinks(path) if err != nil { fmt.Println("Error:", err) return } fmt.Println(res) }

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

"Error: lstat /nonexistent/path: no such file or directory"

Пример

Если путь не содержит ссылок, функция вернет очищенный путь. Например, для пути с лишними разделителями и элементами ..:

package main import ( "fmt" "path/filepath" ) func main() { path := "/home/user/../user/project/./file.txt" res, err := filepath.EvalSymlinks(path) if err != nil { fmt.Println("Error:", err) return } fmt.Println(res) }

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

"/home/user/project/file.txt"

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

  • функцию filepath.Join,
    которая объединяет элементы пути в один путь
  • функцию filepath.Abs,
    которая возвращает абсолютный путь
  • функцию filepath.Clean,
    которая очищает путь от лишних элементов
  • функцию os.Readlink,
    которая возвращает цель одной символической ссылки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить