Ce face filepath.SplitList
Variabile ca PATH sau GOPATH conțin mai multe directoare, separate prin : (Linux, macOS) sau ; (Windows). filepath.SplitList le separă folosind os.PathListSeparator.
Spre deosebire de strings.Split, pentru textul gol returnează o listă goală, nu [""].
Parametri
| Parametru | Descriere |
|---|---|
path |
Lista de căi, de exemplu valoarea lui PATH. |
Ce returnează
Un []string cu fiecare cale.
Exemple
Exemplul 1: Directoarele din PATH
Setăm PATH din cod ca rezultatul să fie același oriunde.
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
os.Setenv("PATH", "/usr/local/bin:/usr/bin:/bin:/home/ana/go/bin")
for i, dir := range filepath.SplitList(os.Getenv("PATH")) {
fmt.Println(i+1, dir)
}
fmt.Println(len(filepath.SplitList("")), "elemente pentru textul gol")
}
Rezultat
1 /usr/local/bin
2 /usr/bin
3 /bin
4 /home/ana/go/bin
0 elemente pentru textul gol
Exemplul 2: Căutarea unui program în PATH
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
os.Mkdir("unelte", 0o755)
os.WriteFile("unelte/backup", []byte("#!/bin/sh\n"), 0o755)
os.Setenv("PATH", "/nu/exista:unelte:/alt/dir")
for _, dir := range filepath.SplitList(os.Getenv("PATH")) {
cale := filepath.Join(dir, "backup")
if _, err := os.Stat(cale); err == nil {
fmt.Println("găsit:", cale)
}
}
}
Rezultat
găsit: unelte/backup
Greșeli frecvente
- Împarți
PATHcustrings.Split(p, ":"). Pe Windows separatorul este;, iarC:\...conține:.
Comenzi înrudite
exec.LookPath: Caută un program executabil în directoarele din PATH și returnează calea lui.os.Getenv: Returnează valoarea unei variabile de mediu sau textul gol dacă variabila nu există.filepath.Split: Împarte o cale în director (cu separatorul final) și numele fișierului.