filepath.SplitList în Go

Împarte o listă de căi precum $PATH după separatorul de listă al sistemului (: pe Unix, ; pe Windows).

Sintaxă
func SplitList(path string) []string

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 PATH cu strings.Split(p, ":"). Pe Windows separatorul este ;, iar C:\... 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.