„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So überprüfen Sie die Existenz von Elementen in GO -Scheiben effizient

So überprüfen Sie die Existenz von Elementen in GO -Scheiben effizient

Gepostet am 2025-04-21
Durchsuche:742

How to Efficiently Check for Element Presence in Go Slices?

ü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.

Neuestes Tutorial Mehr>

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