Ich habe eine rekursive Funktion, die Objekte erstellt, die Dateipfade darstellen (die Schlüssel sind Pfade und die Werte sind Informationen über die Datei). Es ist rekursiv, da es nur für Dateien gedacht ist. Wenn ein Verzeichnis gefunden wird, wird die Funktion rekursiv für das Verzeichnis aufgerufen.Die Vereinigung von zwei Karten in gehen
Alles was gesagt wird, würde ich gerne das Äquivalent einer Satz Union auf zwei Karten tun (d. H. Die "Haupt" -Karte aktualisiert mit den Werten aus dem rekursiven Aufruf). Gibt es einen idiomatischen Weg, dies zu tun, abgesehen davon, dass man über eine Karte iteriert und jedem Schlüssel, Wert darin, dasselbe in der anderen Karte zuweist?
Das heißt: Da a,b
vom Typ sind map [string] *SomeObject
und a
und b
schließlich besiedelt sind, ist es eine Möglichkeit, a
mit allen Werten in b
zu aktualisieren?
Vielleicht können Sie einen aktuellen Satz Behälter für diese Art von Arbeit nutzen: http://github.com/deckarep/golang-set –
Ralph Vorschlag ist gut für Sätze. Ich würde jedoch sagen, dass es in Ihrem Fall nicht so sehr eine * Vereinigung *, sondern eine * Vereinigung * ist; Eine Menge sollte nur eine Sammlung von "Schlüsseln" sein, während Sie zwei Sammlungen von Schlüssel/Wert-Paaren haben, wobei eine "Menge" Vorrang vor der anderen haben sollte. – ANisus