filepath.Base în Go

Returnează ultimul element al unei căi: numele fișierului (sau al ultimului director).

Sintaxă
func Base(path string) string

Ce face filepath.Base

filepath.Base taie tot ce este înainte de ultimul separator. Separatoarele de la final sunt ignorate, deci Base("poze/vacanta/") dă vacanta.

Cazuri speciale: o cale goală dă ".", iar o cale formată doar din separatoare dă "/". Pentru numele fără extensie combină cu filepath.Ext: strings.TrimSuffix(base, filepath.Ext(base)).

Parametri

Parametru Descriere
path Calea.

Ce returnează

Ultimul element al căii.

Exemple

Exemplul 1: Ultimul element

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    for _, c := range []string{"/home/ana/cv.pdf", "poze/vacanta/", "nota.txt", "", "/"} {
        fmt.Printf("%-18q -> %q\n", c, filepath.Base(c))
    }
}

Rezultat

"/home/ana/cv.pdf" -> "cv.pdf"
"poze/vacanta/"    -> "vacanta"
"nota.txt"         -> "nota.txt"
""                 -> "."
"/"                -> "/"

Exemplul 2: Numele fără extensie

package main

import (
    "fmt"
    "path/filepath"
    "strings"
)

func main() {
    cale := "/srv/facturi/2025/factura-1042.pdf"
    nume := filepath.Base(cale)
    fara := strings.TrimSuffix(nume, filepath.Ext(nume))
    fmt.Println(nume)
    fmt.Println(fara)
    fmt.Println(fara + ".xml")
}

Rezultat

factura-1042.pdf
factura-1042
factura-1042.xml

Greșeli frecvente

  • Folosești Base pe un URL cu parametri (poza.jpg?w=200) și primești și parametrii. Parsează URL-ul întâi cu net/url.

Comenzi înrudite

  • filepath.Dir: Returnează partea de director a unei căi: tot ce este înainte de ultimul element.
  • filepath.Ext: Returnează extensia fișierului: textul de la ultimul punct din ultimul element, inclusiv punctul.
  • filepath.Split: Împarte o cale în director (cu separatorul final) și numele fișierului.
  • filepath.Join: Unește mai multe bucăți într-o cale, cu separatorul corect al sistemului, și curăță rezultatul.