Функция filepath.Join
Функция filepath.Join объединяет один или несколько
элементов пути в один строковый путь. Она автоматически
добавляет правильный разделитель для операционной системы:
обратный слеш \ на Windows или прямой слеш /
на Unix-подобных системах. Первым параметром функция принимает
базовую директорию, а последующие параметры — вложенные
элементы пути. В результате возвращается строка с
объединенным путем.
Синтаксис
filepath.Join(elem ...string) string
Пример
Давайте объединим несколько элементов пути на Unix-системе:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res := filepath.Join("home", "user", "docs", "file.txt")
fmt.Println(res)
}
Результат выполнения кода:
"home/user/docs/file.txt"
Пример
Функция автоматически очищает путь, удаляя лишние слеши и нормализуя разделители:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res := filepath.Join("home//user", "docs", "file.txt")
fmt.Println(res)
}
Результат выполнения кода:
"home/user/docs/file.txt"
Пример
Функция игнорирует пустые элементы и обрабатывает абсолютные пути правильно:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res1 := filepath.Join("", "dir", "file.txt")
res2 := filepath.Join("/", "usr", "bin", "app")
fmt.Println(res1)
fmt.Println(res2)
}
Результат выполнения кода:
"dir/file.txt"
"/usr/bin/app"
Пример
Функция корректно обрабатывает переходы по директориям
с помощью ..:
package main
import (
"fmt"
"path/filepath"
)
func main() {
res := filepath.Join("home", "user", "..", "docs", "file.txt")
fmt.Println(res)
}
Результат выполнения кода:
"home/docs/file.txt"
Смотрите также
-
функцию
filepath.Clean,
которая нормализует и очищает путь от лишних элементов -
функцию
filepath.Abs,
которая возвращает абсолютный путь к файлу или директории -
функцию
filepath.Base,
которая извлекает последний элемент пути -
функцию
filepath.Dir,
которая извлекает директорию из пути