überprüfe Elementpräsenz in Go Slices
In Go fasst ein Stück keine Methode wie Slice.Contains (Objekt) zur Bestimmung des Vorhandenseins eines Elements an. Stattdessen besteht eine gemeinsame Lösung darin, jedes Element durchzuführen, um die Suche durchzuführen.
alternative Ansätze:
benutzerdefinierte Methode:
Erstellen einer benutzerdefinierten Slice.contains (). importieren "fmt" func main () { Slice: = [] int {1, 2, 3} Wenn SliceContains (Slice, 2) { fmt.println ("enthält") } anders { fmt.println ("nicht enthält") } } Func SliceContains (Slice [] int, Object int) bool { Für _, v: = Bereich Slice { Wenn v == Objekt { RECHT WAHR } } Return falsch }
package main import "fmt" func main() { slice := []int{1, 2, 3} if sliceContains(slice, 2) { fmt.Println("Contains") } else { fmt.Println("Not contains") } } func sliceContains(slice []int, object int) bool { for _, v := range slice { if v == object { return true } } return false }binäre Suche:
Wie von MKB vorgeschlagen, bietet der binäre Suchalgorithmus des Sortierpakets einen effizienteren Ansatz für große Scheiben. importieren ( "fmt" "Sortieren" ) func main () { Slice: = [] int {1, 2, 3} sort.ints (Slice) Index: = sort.SearchInts (Slice, 2) Wenn Index! = len (Slice) { fmt.println ("enthält") } anders { fmt.println ("nicht enthält") } }
Verwenden einer Karte:
package main import "fmt" func main() { slice := []int{1, 2, 3} if sliceContains(slice, 2) { fmt.Println("Contains") } else { fmt.Println("Not contains") } } func sliceContains(slice []int, object int) bool { for _, v := range slice { if v == object { return true } } return false }
Wenn zahlreiche Existenzprüfungen erwartet werden, bietet die Verwendung einer Karte als Alternative zu einer Sicht eine effizientere Lösung. importieren ( "fmt" "Synchronisation" ) func main () { Slice: = [] int {1, 2, 3} m: = make (map [int] struct {}, len (Slice)) Für _, v: = Bereich Slice { m [v] = struct {} {} } Wenn _, existiert: = m [2]; existiert { fmt.println ("enthält") } anders { fmt.println ("nicht enthält") } } In diesem Szenario wird eine Karte [String] struct {} aufgrund des optimierten internen Kartentyps für solche Werte häufig für Sets verwendet.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3