os.IsPathSeparator în Go

Spune dacă un caracter este separator de cale pe sistemul curent (/ pe Unix, / sau \ pe Windows).

Sintaxă
func IsPathSeparator(c uint8) bool

Ce face os.IsPathSeparator

os.IsPathSeparator verifică un singur octet. Pe Linux și macOS doar '/' este separator. Pe Windows sunt acceptate atât '\', cât și '/'.

Constanta os.PathSeparator conține separatorul principal ('/' sau '\'). În practică, funcțiile din path/filepath rezolvă aproape toate cazurile; IsPathSeparator e utilă când parcurgi singur o cale caracter cu caracter.

Parametri

Parametru Descriere
c Octetul de verificat, de exemplu '/'.

Ce returnează

true dacă este separator, altfel false.

Exemple

Exemplul 1: Ce caractere sunt separatoare

Rezultatul este cel de pe Linux/macOS; pe Windows și \ ar fi true.

package main

import (
    "fmt"
    "os"
)

func main() {
    for _, c := range []byte{'/', '\\', ':', 'a'} {
        fmt.Printf("%q: %v\n", c, os.IsPathSeparator(c))
    }
    fmt.Printf("os.PathSeparator = %q\n", os.PathSeparator)
}

Rezultat

'/': true
'\\': false
':': false
'a': false
os.PathSeparator = '/'

Exemplul 2: Eliminarea separatoarelor de la final

package main

import (
    "fmt"
    "os"
)

func faraSeparatorFinal(cale string) string {
    for len(cale) > 1 && os.IsPathSeparator(cale[len(cale)-1]) {
        cale = cale[:len(cale)-1]
    }
    return cale
}

func main() {
    fmt.Println(faraSeparatorFinal("/home/ana/poze///"))
    fmt.Println(faraSeparatorFinal("documente/"))
    fmt.Println(faraSeparatorFinal("/"))
}

Rezultat

/home/ana/poze
documente
/

Greșeli frecvente

  • Compari direct cu '/' într-un program care trebuie să meargă și pe Windows. Folosește os.IsPathSeparator sau funcțiile din filepath.

Comenzi înrudite

  • filepath.Split: Împarte o cale în director (cu separatorul final) și numele fișierului.
  • filepath.Clean: Simplifică o cale: elimină separatoarele duble, „.” și rezolvă „..” doar din text, fără acces la disc.
  • filepath.FromSlash: FromSlash înlocuiește „/” cu separatorul sistemului; ToSlash face invers, înlocuind separatorul cu „/”.