Ce face slices.Index
slices.Index(s, v) returnează indicele primului element egal cu v. Dacă nu există, returnează -1.
slices.IndexFunc(s, f) returnează indicele primului element pentru care f returnează true, sau -1. Este util când cauți într-un slice de structuri: „primul elev din Iași”.
Verifică întotdeauna rezultatul înainte să-l folosești ca indice: s[-1] oprește programul cu panic.
Parametri
| Parametru | Descriere |
|---|---|
s |
Slice-ul în care cauți. |
v |
Valoarea căutată. |
f |
Pentru IndexFunc: condiția. |
Ce returnează
Indicele primei potriviri sau -1.
Exemple
Exemplul 1: Poziția unei valori
package main
import (
"fmt"
"slices"
)
func main() {
zile := []string{"luni", "marți", "miercuri", "joi", "vineri"}
fmt.Println(slices.Index(zile, "joi"))
fmt.Println(slices.Index(zile, "duminică"))
}
Rezultat
3
-1
Exemplul 2: Primul elev dintr-un oraș
package main
import (
"fmt"
"slices"
)
type Elev struct {
Nume, Oras string
}
func main() {
elevi := []Elev{{"Ana", "Cluj"}, {"Mihai", "Iași"}, {"Ioana", "Iași"}}
i := slices.IndexFunc(elevi, func(e Elev) bool { return e.Oras == "Iași" })
if i >= 0 {
fmt.Println("Primul din Iași:", elevi[i].Nume, "la poziția", i)
}
j := slices.IndexFunc(elevi, func(e Elev) bool { return e.Oras == "Arad" })
fmt.Println("Din Arad:", j)
}
Rezultat
Primul din Iași: Mihai la poziția 1
Din Arad: -1
Greșeli frecvente
- Folosești rezultatul direct ca indice (
s[slices.Index(s, v)]) fără să verifici-1: programul se oprește cuindex out of range [-1].
Comenzi înrudite
slices.Contains: Verifică dacă un slice conține o valoare (Contains) sau un element care îndeplinește o condiție (ContainsFunc).slices.BinarySearch: Caută rapid o valoare într-un slice sortat; returnează poziția (sau unde s-ar insera) și dacă a găsit-o.slices.Delete: Delete șterge elementele s[i:j]; DeleteFunc șterge toate elementele care îndeplinesc o condiție. Ambele returnează slice-ul nou.