Ce face slices.Contains
slices.Contains(s, v) returnează true dacă valoarea v apare cel puțin o dată în s. Elementele trebuie să fie comparabile cu == (numere, texte, structuri simple).
slices.ContainsFunc(s, f) returnează true dacă există cel puțin un element pentru care f(element) este true: „există vreo notă sub 5?”, „există un produs fără stoc?”.
Ambele parcurg slice-ul de la început până găsesc (căutare liniară). Pentru multe verificări pe aceleași date, un map[T]bool sau un slice sortat cu BinarySearch este mai rapid.
Parametri
| Parametru | Descriere |
|---|---|
s |
Slice-ul în care cauți. |
v |
Valoarea căutată. |
f |
Pentru ContainsFunc: condiția verificată pentru fiecare element. |
Ce returnează
true dacă a găsit, altfel false.
Exemple
Exemplul 1: Este orașul în listă?
package main
import (
"fmt"
"slices"
)
func main() {
livrare := []string{"Iași", "Suceava", "Bacău", "Vaslui"}
for _, oras := range []string{"Bacău", "Cluj"} {
if slices.Contains(livrare, oras) {
fmt.Println(oras, ": livrăm")
} else {
fmt.Println(oras, ": nu livrăm")
}
}
}
Rezultat
Bacău : livrăm
Cluj : nu livrăm
Exemplul 2: Există vreo notă sub 5?
package main
import (
"fmt"
"slices"
)
func main() {
ana := []int{9, 8, 10, 7}
mihai := []int{6, 4, 8}
subCinci := func(n int) bool { return n < 5 }
fmt.Println("Ana are corigență:", slices.ContainsFunc(ana, subCinci))
fmt.Println("Mihai are corigență:", slices.ContainsFunc(mihai, subCinci))
}
Rezultat
Ana are corigență: false
Mihai are corigență: true
Greșeli frecvente
- Scrii propria buclă
fordoar ca să verifici dacă există o valoare:slices.Containsface asta într-un rând. - Cauți texte fără să ții cont de majuscule:
Containscompară exact. FoloseșteContainsFunccustrings.EqualFold.
Comenzi înrudite
slices.Index: Returnează poziția primei apariții a unei valori (Index) sau a primului element care îndeplinește o condiție (IndexFunc), ori -1.slices.BinarySearch: Caută rapid o valoare într-un slice sortat; returnează poziția (sau unde s-ar insera) și dacă a găsit-o.maps.Keys: Returnează un iterator peste cheile (Keys) sau valorile (Values) unui map, în ordine aleatorie.