„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 > Wie kann ich das Vorhandensein von Schlüsseln auf mehreren Go-Maps effizient prüfen?

Wie kann ich das Vorhandensein von Schlüsseln auf mehreren Go-Maps effizient prüfen?

Veröffentlicht am 22.12.2024
Durchsuche:113

How Can I Efficiently Check for Key Existence Across Multiple Go Maps?

Effiziente Schlüsselexistenzprüfung in mehreren Karten

In Go wird häufig mit Karten gearbeitet, bei denen es sich um effiziente Datenstrukturen zum Abrufen von Schlüsseln handelt -Wert-Paare. Der vom Entwickler bereitgestellte Code zeigt jedoch, dass die Existenz eines Schlüssels in zwei separaten Karten überprüft werden muss. Es bleibt die Frage, ob dieser Prozess prägnanter gestaltet werden kann.

Wie in der Antwort erläutert, ist die Verwendung der speziellen Form v, ok := m[k] in Go zur Überprüfung der Schlüsselexistenz auf Zuweisungen einzelner Variablen beschränkt . Daher ist die Kombination der beiden Prüfungen zu einer if-Bedingung in dieser Form nicht möglich.

Es gibt jedoch alternative Ansätze, um die gewünschte Funktionalität zu erreichen:

  1. Tupelzuweisung:
    Wenn der Werttyp der Karte ein Schnittstellentyp ist und Sie sicherstellen können, dass der Nullwert nicht verwendet wird, können Sie die Tupelzuweisung mithilfe von zwei Indizes durchführen Ausdrücke:

    if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil {
        // ...
    }
  2. Hilfsfunktion:
    Eine Hilfsfunktion kann erstellt werden, um die Schlüsselexistenzprüfung in beiden Karten durchzuführen und die Ergebnisse zurückzugeben:

    func idx(m1, m2 map[string]interface{}, k string) (
        v1, v2 interface{}, ok1, ok2 bool) {
    
        v1, ok1 = m1[k]
        v2, ok2 = m2[k]
        return
    }

    Diese Funktion kann dann wie folgt verwendet werden:

    if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 {
        // ...
    }

Diese Ansätze ermöglichen eine präzise und effiziente Prüfung der Existenz eines Schlüssels in mehreren Zuordnungen innerhalb einer einzigen bedingten Anweisung.

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