| 
             Пакет filepath забезпечує функціонал для роботи з файловими шляхами
таким чином, що його робота є універсальною для операційних систем
сімейства UNIX або Windows. 
           | 
          
            
          
           | 
        
        
        
          | 
            
           | 
          
              
          package main 
           | 
        
        
        
          | 
            
           | 
          
            
          import (
    "fmt"
    "path/filepath"
    "strings"
) 
           | 
        
        
        
          | 
            
           | 
          
            
          func main() { 
           | 
        
        
        
          | 
             Join використовується для побудови шляхів.
Функція прийме будь-яку кількість строкових аргументів
і побудує ієрархічний шлях. 
           | 
          
            
              p := filepath.Join("dir1", "dir2", "filename")
    fmt.Println("p:", p) 
           | 
        
        
        
          | 
             Використовуйте Join замість об’єднання / або \ вручну.
На додачу, функція Join нормалізує шляхи, видаляючи зайві
розділювачі та каталоги. 
           | 
          
            
              fmt.Println(filepath.Join("dir1//", "filename"))
    fmt.Println(filepath.Join("dir1/../dir1", "filename")) 
           | 
        
        
        
          | 
             Скористаємось Dir та Base для визначення каталогу та
файлу з наданого шляху. Альтернативою є Split- який буде
повертати обидва значення за одни виклик. 
           | 
          
            
              fmt.Println("Dir(p):", filepath.Dir(p))
    fmt.Println("Base(p):", filepath.Base(p))
    dir, file := filepath.Split(p)
    fmt.Printf("Dir(p): %s та Base(p): %s\n", dir, file) 
           | 
        
        
        
          | 
             Перевірка - чи є шлях абсолютним? 
           | 
          
            
              fmt.Println(filepath.IsAbs("dir/file"))
    fmt.Println(filepath.IsAbs("/dir/file")) 
           | 
        
        
        
          | 
            
           | 
          
            
              filename := "config.json" 
           | 
        
        
        
          | 
             Більшість файлів мають в назві розширення (після крапки).
Ми можемо дізнатись розширення файлу за допомогою функції Ext. 
           | 
          
            
              ext := filepath.Ext(filename)
    fmt.Println(ext) 
           | 
        
        
        
          | 
             Щоб дізнатись ім’я файлу без розширення,
скористайтесь strings.TrimSuffix. 
           | 
          
            
              fmt.Println(strings.TrimSuffix(filename, ext)) 
           | 
        
        
        
          | 
             Rel знаходить шлях між base і target.
Він повертає помилку, якщо це не можна зробити. 
           | 
          
            
              rel, err := filepath.Rel("a/b", "a/b/t/file")
    if err != nil {
        panic(err)
    }
    fmt.Println(rel) 
           | 
        
        
        
          | 
            
           | 
          
            
              rel, err = filepath.Rel("a/b", "a/c/t/file")
    if err != nil {
        panic(err)
    }
    fmt.Println(rel)
} 
           |