CahBagus
MENU CLOSE

Go: Memisahkan path ke slice

Cara paling sederhana menggunakan strings.Split(). Sebagai contoh:

path := "foo/to/bar"

parts := strings.Split(path, "/")
fmt.Println(parts)
// Hasilnya: [foo to bar]

Cuma masalah ketika ada / di awal atau akhir. Itu cara tersebut akan menghasilkan ["", "foo", "to", "bar", ""], menghasilkan string kosong di awal ataupun akhir.

Maka solusinya bikin helper sederhana:

func SplitPath(p string) []string {
    return strings.FieldsFunc(p, func(r rune) bool {
        return r == '/'
    })
}

Atau jika males buat Helper tinggal filter aja:

parts := strings.Split(path, "/")
// Filter empty
result := parts[:0]
for _, p := range parts {
    if p != "" {
        result = append(result, p)
    }
}
Catatan Penting

Jika path seperti di windows (backslash), kita perlu filepath.ToSlash() dulu.