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 es nicht möglich, die beiden Prüfungen in einer If-Bedingung in dieser Form zu kombinieren.
Es gibt jedoch alternative Ansätze, um die gewünschte Funktionalität zu erreichen:
Tupelzuweisung:
Wenn der Werttyp der Karte ein Schnittstellentyp ist und Sie sicherstellen können, dass der Nullwert nicht verwendet wird, können Sie eine Tupelzuweisung mit durchführen zwei Indexausdrücke:
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
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 verwendet werden als folgt:
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.
Das obige ist der detaillierte Inhalt vonWie kann ich das Vorhandensein von Schlüsseln auf mehreren Go-Maps effizient prüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!