Heim >Backend-Entwicklung >Golang >Wie kann die Elementmitgliedschaft in Go-Arrays effizient überprüft werden?

Wie kann die Elementmitgliedschaft in Go-Arrays effizient überprüft werden?

Susan Sarandon
Susan SarandonOriginal
2024-12-31 15:49:09769Durchsuche

How to Efficiently Check for Element Membership in Go Arrays?

Überprüfung der Mitgliedschaft in Arrays in Go

Im Gegensatz zu Python gibt es in Go kein integriertes Konstrukt, das Pythons „if x in“ entspricht " zum Überprüfen der Anwesenheit eines Elements in einem Array.

Post Go 1.18 (Empfohlen Ansatz)

Ab Go 1.18 können Sie die Funktion „slices.Contains“ verwenden, um effizient auf Zugehörigkeit zu einem Slice zu prüfen.

if slices.Contains(array, "x") {
    // Do something
}

Vor Go 1.18 (Alternative Methoden)

Wenn Sie eine ältere Version von Go verwenden, haben Sie zwei Optionen:

  1. Iterative Suche: Iterieren Sie über das Array und vergleichen Sie jedes Element mit dem Zielwert „x“. Dieser Ansatz ist für große Arrays ineffizient.
func stringInSlice(a string, list []string) bool {
    for _, b := range list {
        if b == a {
            return true
        }
    }
    return false
}
  1. Kartenverwendung: Konvertieren Sie das Array in eine Karte (Wörterbuch) mithilfe eines Schlüssel-Wert-Paares, wobei der Schlüssel ist der Zielwert und der Wert ist ein boolescher Wert. Dieser Ansatz hat unabhängig von der Array-Größe eine konstante Suchzeit.
visitedURL := map[string]bool{
    "http://www.google.com": true,
    "https://paypal.com": true,
}
if visitedURL["thisSite"] {
    fmt.Println("Already been here.")
}

Denken Sie daran, den geeigneten Ansatz basierend auf der Größe und Art Ihrer Datensammlung auszuwählen.

Das obige ist der detaillierte Inhalt vonWie kann die Elementmitgliedschaft in Go-Arrays effizient überprüft werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn